У меня есть изображение на основе 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](https://i.stack.imgur.com/iqHDl.png)
И это контейнер, работающий после запуска приложения с использованием CMD
и ENTRYPOINT
:
![enter image description here](https://i.stack.imgur.com/pwQsZ.png)
Мой вопрос: что я могу сделать, чтобы запускать Java-приложения в производном образе PostgreSQL?
РЕДАКТИРОВАТЬ Пожалуйста, избегайте делать то, что я делаю (поместите более одного сервиса в контейнер), потому что вы нарушите некоторые полезные практики микросервисов. Мне нужно сделать это, потому что я должен использовать очень маленький сервис для управления некоторыми аспектами файловой системы из других сервисов. Это очень частный случай.