У меня есть образ 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
Есть что-то, чего мне здесь не хватает?