Как написать dockerfile для веб-приложения переднего плана - PullRequest
1 голос
/ 02 июля 2019

Попытка развернуть мое первое веб-приложение на Java в Google Kubernetes. Он должен иметь 3 контейнера.

1 - интерфейсное веб-приложение

2 - внутреннее веб-приложение Java - веб-служба Джерси

3 - сервер postgres

Целое веб-приложение работает на Eclipse Jee (Tomcat) на моем ноутбуке без проблем. Веб-приложение - это очень простое SPA без каких-либо maven или gradle сборок. Для бэкэнда: Dockerfile

FROM tomcat:9.0
ADD backend.war /usr/local/tomcat/webapps/backend.war
EXPOSE 8080

Изображение сверху работает нормально. Но для интерфейсного веб-приложения я действительно запутался. Перепробовал следующие варианты безуспешно: а)

FROM  tomcat:9.0
ADD frontend.war /usr/local/tomcat/webapps/frontend.war

б)

FROM tomcat:9.0
COPY frontend.war /usr/local/tomcat/webapps/frontend.war
EXPOSE 8080

в)

FROM 8.0-jre8-alpine
COPY frontend.war /usr/local/tomcat/webapps/frontend.war

Когда я пытался получить доступ к своему сайту с помощью IP-адреса loadbalancer, который Google предоставил в браузере, я получил сообщение «Недоступно».

1 Ответ

1 голос
/ 02 июля 2019

Вот мой пример веб-приложения с бэкэндом в качестве базы данных mysql.

Внешний Dockerfile

FROM  tomcat:9.0
ADD art-gallery-management.war /usr/local/tomcat/webapps/art-gallery-management.war
WORKDIR /usr/local/tomcat/
CMD ["catalina.sh" "run"]
EXPOSE 8080/tcp

Внутренний Dockerfile

FROM mysql:latest
WORKDIR /docker-entrypoint-initdb.d
ADD Schema.sql /docker-entrypoint-initdb.d
CMD ["mysqld"]
EXPOSE 3306/tcp

Начальные контейнеры

docker container run -d --name art-gallery-management-db -e MYSQL_ROOT_PASSWORD=vision -p 3306:3306 bukkasamudram/art-gallery-management:db-latest 
docker container run -d --name art-gallery-management-app --link art-gallery-management-db -p 8090:8080 bukkasamudram/art-gallery-management:app-latest

Обязательно используйте опцию link , чтобы связать внешний контейнер с внутренним контейнером.

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