Docker - 无法在 Kubernetes 集群上启动 Webpack Dev Server
Docker - Unable to start Webpack Dev Server on Kubernetes Cluster
我正在尝试在 Digital Ocean Kubernetes 集群上的 Rails 应用程序中启动 Webpack Dev Server。我想不出正确的命令。该应用程序在 Docker 本地运行。
我不断收到这样的错误:
Error: failed to start container "exactpos-webpack": Error response from
daemon: OCI runtime create failed: container_linux.go:348: starting
container process caused "exec: \"bin/bash\": stat bin/bash: no such
file or directory": unknown Back-off restarting failed container
这是我的 docker-compose.yml 文件中的代码:
webpack_dev_server: build: .
command: ./bin/webpack-dev-server
ports:
- 3035:3035
volumes:
- .:/usr/src/app
- gem_cache:/gems
env_file:
- .env/development/web
- .env/development/database environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
这是我的 kubectl 部署 yaml 文件:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: exactpos-webpack
spec:
replicas: 1
minReadySeconds: 150
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: exactpos-webpack
tier: webpack
template:
metadata:
name: exactpos-webppack
labels:
app: exactpos-webpack
tier: webpack
spec:
imagePullSecrets:
- name: dockerhub-cred
containers:
- name: exactpos-webpack
image: index.docker.io/markhorrocks/exactpos_webpacker_dev_server:prod
command: ["bin/bash","-c", "./bin/webpack_dev_server"]
imagePullPolicy: Always
ports:
- containerPort: 3500
readinessProbe:
tcpSocket:
port: 3500
initialDelaySeconds: 150
timeoutSeconds: 5
periodSeconds: 5
failureThreshold: 10
livenessProbe:
tcpSocket:
port: 3500
initialDelaySeconds: 120
timeoutSeconds: 5
periodSeconds: 5
failureThreshold: 10
env:
- name: RAILS_LOG_TO_STDOUT
value: "true"
- name: RAILS_SERVE_STATIC_FILES
value: "true"
- name: DATABASE_NAME
value: "exactpos_production"
- name: DATABASE_PORT
value: "5432"
- name: DATABASE_URL
value: "postgres"
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: "db-user"
key: "username"
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: "db-user-pass"
key: "password"
- name: REDIS_URL
value: "redis"
- name: REDIS_PORT
value: "6379"
- name: RAILS_ENV
value: "production"
- name: WEBPACKER_DEV_SERVER_HOST
value: "0.0.0.0"
- name: SECRET_KEY_BASE
valueFrom:
secretKeyRef:
name: "secret-key-base"
key: "secret-key-base"
您的 deployment.yaml 有以下内容:
command: ["bin/bash","-c", "./bin/webpack_dev_server"]
docker 图像中没有 bin/bash
。它应该是这样的:
command: ["/bin/bash","-c", "./bin/webpack_dev_server"]
我相信,它会解决你的问题。
EDIT1:我再次查看了您的 docker-compose.yml 文件并看到以下行:
volumes:
- .:/usr/src/app
这意味着您在 docker 的 运行 时将所有文件从 .
目录复制到 /usr/src/app
。 config/webpacker.yml
是否出现在该位置?或者您在 运行 时从 .
目录中的任何内容覆盖了 /usr/src/app
。您能否也分享一下您的应用程序的 DockerFile 以便更好地理解?
我正在尝试在 Digital Ocean Kubernetes 集群上的 Rails 应用程序中启动 Webpack Dev Server。我想不出正确的命令。该应用程序在 Docker 本地运行。
我不断收到这样的错误:
Error: failed to start container "exactpos-webpack": Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"bin/bash\": stat bin/bash: no such file or directory": unknown Back-off restarting failed container
这是我的 docker-compose.yml 文件中的代码:
webpack_dev_server: build: .
command: ./bin/webpack-dev-server
ports:
- 3035:3035
volumes:
- .:/usr/src/app
- gem_cache:/gems
env_file:
- .env/development/web
- .env/development/database environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
这是我的 kubectl 部署 yaml 文件:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: exactpos-webpack
spec:
replicas: 1
minReadySeconds: 150
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: exactpos-webpack
tier: webpack
template:
metadata:
name: exactpos-webppack
labels:
app: exactpos-webpack
tier: webpack
spec:
imagePullSecrets:
- name: dockerhub-cred
containers:
- name: exactpos-webpack
image: index.docker.io/markhorrocks/exactpos_webpacker_dev_server:prod
command: ["bin/bash","-c", "./bin/webpack_dev_server"]
imagePullPolicy: Always
ports:
- containerPort: 3500
readinessProbe:
tcpSocket:
port: 3500
initialDelaySeconds: 150
timeoutSeconds: 5
periodSeconds: 5
failureThreshold: 10
livenessProbe:
tcpSocket:
port: 3500
initialDelaySeconds: 120
timeoutSeconds: 5
periodSeconds: 5
failureThreshold: 10
env:
- name: RAILS_LOG_TO_STDOUT
value: "true"
- name: RAILS_SERVE_STATIC_FILES
value: "true"
- name: DATABASE_NAME
value: "exactpos_production"
- name: DATABASE_PORT
value: "5432"
- name: DATABASE_URL
value: "postgres"
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: "db-user"
key: "username"
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: "db-user-pass"
key: "password"
- name: REDIS_URL
value: "redis"
- name: REDIS_PORT
value: "6379"
- name: RAILS_ENV
value: "production"
- name: WEBPACKER_DEV_SERVER_HOST
value: "0.0.0.0"
- name: SECRET_KEY_BASE
valueFrom:
secretKeyRef:
name: "secret-key-base"
key: "secret-key-base"
您的 deployment.yaml 有以下内容:
command: ["bin/bash","-c", "./bin/webpack_dev_server"]
docker 图像中没有 bin/bash
。它应该是这样的:
command: ["/bin/bash","-c", "./bin/webpack_dev_server"]
我相信,它会解决你的问题。
EDIT1:我再次查看了您的 docker-compose.yml 文件并看到以下行:
volumes:
- .:/usr/src/app
这意味着您在 docker 的 运行 时将所有文件从 .
目录复制到 /usr/src/app
。 config/webpacker.yml
是否出现在该位置?或者您在 运行 时从 .
目录中的任何内容覆盖了 /usr/src/app
。您能否也分享一下您的应用程序的 DockerFile 以便更好地理解?