Docker - Невозможно запустить Webpack Dev Server в кластере Kubernetes - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь запустить Webpack Dev Server в приложении Rails на кластере Digital Ocean Kubernetes.Я не могу понять правильную команду.Приложение работает в Docker локально.

Я продолжаю получать сообщения об ошибках вроде этого:

Ошибка: не удалось запустить контейнер "surepos-webpack": Ошибка ответа от демона: Ошибка создания среды выполнения OCI: container_linux.go: 348: запуск процесса контейнера вызвал "exec: \" bin / bash \ ": stat bin / bash: нет такого файла или каталога": неизвестно Сбой при перезапуске контейнера

Вот код из моего файла 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

Вот мой файл yaml для развертывания kubectl:

---
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"

1 Ответ

0 голосов
/ 27 декабря 2018

Ваш файл deploy.yaml имеет следующее:

command: ["bin/bash","-c", "./bin/webpack_dev_server"]

В образе докера нет 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 вашего приложения, чтобы лучше понять?

...