Мой образ PostgreSQL Docker перестает работать после добавления CMD - PullRequest
0 голосов
/ 21 мая 2019

У меня есть изображение на основе mdillon/postgis для обслуживания сервера PostgreSQL.

Просто добавил некоторый код в мой Dockerfile, чтобы добавить java OpenJDK из официального OpenJDK Dockerfile для того же дистрибутива (объединить FROM mdillon/postgis с кодом из OpenJDK). Результат слишком длинный и С.О. жалуется на это, поэтому я не могу публиковать здесь.

После этого все работает очень хорошо, и у меня есть сервер Postgres с Java. Я могу доказать это, запустив java -version в консоли и получив доступ к серверу, используя мой PGAdmin4.

Моя проблема начинается, когда я помещаю туда какое-либо приложение (Spring Boot) и пытаюсь запустить его, используя

ENTRYPOINT ["java"]
CMD ["-jar", "/opt/lib/odisseu-1.0.war"]

Мое приложение работает нормально (я могу получить к нему доступ), но сервер Postgres перестает работать. Проверяя Container statistics в моем Portainer, я вижу, что процессы postgres не запущены.

Это контейнер, работающий без моего Java-приложения: enter image description here

И это контейнер, работающий после запуска приложения с использованием CMD и ENTRYPOINT:

enter image description here

Мой вопрос: что я могу сделать, чтобы запускать Java-приложения в производном образе PostgreSQL?

РЕДАКТИРОВАТЬ Пожалуйста, избегайте делать то, что я делаю (поместите более одного сервиса в контейнер), потому что вы нарушите некоторые полезные практики микросервисов. Мне нужно сделать это, потому что я должен использовать очень маленький сервис для управления некоторыми аспектами файловой системы из других сервисов. Это очень частный случай.

1 Ответ

1 голос
/ 21 мая 2019

Изображение mdillon/postgis основано на изображении postgres:alpine.Это изображение использует entrypoint и cmd для запуска postrgresql при запуске контейнера.см здесь .Так что в вашем случае вы удаляете cmd и postrgresql точку входа.

Если вы хотите запустить java и postgresql, вы можете добавить обе команды в свой собственный скрипт bash в команде или в точке входа.

Кстати, я советую вам использовать docker-compose , чтобы запускать postgresql и java в двух разных контейнерах лучше, безопаснее и проще.

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