Docker-контейнер успешно запускается на локальном компьютере, но не может выполнить команду CMD в кластере kubernetes - PullRequest
0 голосов
/ 17 марта 2019

У меня есть образ Docker, который я могу без проблем запустить на своем локальном компьютере, но когда я пытаюсь запустить его в кластере Kubernetes, контейнер не запускается, потому что он не может выполнить команду запуска для приложения.

Я копирую каталог dist, потому что именно там я и упаковал свое приложение. Если бы я хотел запустить его локально, все, что мне нужно, это запустить ./dist/bin/start, и тогда приложение запустилось бы. Это структура каталога.

dist/
├── bin
│   └── start
├── conf
│   ├── application.conf
│   ├── routes
│   └── secure.conf
├── my-play-framework-api-0.1.0-SNAPSHOT
└── lib

Это Dockerfile, который я использую.

FROM openjdk:11-jre-slim
COPY dist /dist
EXPOSE 9000 9443
WORKDIR /dist
CMD ["/dist/bin/start","-Dhttps.port=9443"]

Я могу создать и запустить этот образ с помощью команды docker run.

Проблемы начинают появляться, когда я вытаскиваю это изображение из реестра Gitlab из моего кластера Kubernetes. Образ извлекается успешно в соответствии с выводом, когда я describe Pod, в котором выполняется контейнер. Кажется, что этот контейнер не запускается, потому что он не может найти каталог /dist, даже после того, как я скопировал его в Dockerfile.

Events:
  Type     Reason     Age                  From                                                    Message
  ----     ------     ----                 ----                                                    -------
  Normal   Scheduled  12m                  default-scheduler                                       Successfully assigned <REDACTED>/<REDACTED>-<REDACTED> to <REDACTED>.eu-central-1.compute.internal
  Normal   Pulled     11m (x5 over 12m)    kubelet, <REDACTED>.eu-central-1.compute.internal  Successfully pulled image "<REDACTED>/<REDACTED>/<REDACTED>/<REDACTED>"
  Normal   Created    11m (x5 over 12m)    kubelet, <REDACTED>.eu-central-1.compute.internal  Created container
  Warning  Failed     11m (x5 over 12m)    kubelet, <REDACTED>.eu-central-1.compute.internal  Error: failed to start container "<REDACTED>": Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/dist/bin/start\": stat /dist/bin/start: no such file or directory": unknown
  Normal   Pulling    10m (x6 over 12m)    kubelet, <REDACTED>.eu-central-1.compute.internal  pulling image "registry.gitlab.com/<REDACTED>/<REDACTED>/<REDACTED>"
  Warning  BackOff    119s (x44 over 11m)  kubelet, <REDACTED>.eu-central-1.compute.internal  Back-off restarting failed container

Есть что-то, чего мне здесь не хватает?

1 Ответ

1 голос
/ 17 марта 2019

Может быть, вам нужно исправить свой Dockerfile и обратить внимание на порядок инструкций Docker и некоторые рекомендации.

FROM openjdk:11-jre-slim
WORKDIR /dist
COPY dist/* .
EXPOSE 9000 9443

CMD ["/dist/bin/start","-Dhttps.port=9443"]

И сначала локально протестируйте это и убедитесь, что требуемая структура каталогов существует внутри, выполнивв контейнер и сделайте ls

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...