Docker Compose - Запустите Java-приложение (файл war) на Tomcat, используя тома.
Я пытаюсь развернуть Java-приложение, используя Maven и Tomcat в Docker. Я использую два Dockerfiles, один для моего проекта maven и один для tomcat, составляя их с помощью docker-compose, а затем я копирую файл.war из контейнера maven в контейнер tomcat, но способом, который мне не очень нравится. Я уверен, что есть способ сделать это с объемами, и это мой вопрос. Мои файлы это...
Maven Dockerfile
FROM maven:3.5.2-jdk-8
RUN git clone mygitproject
# Create app directory
WORKDIR mics-project
RUN mvn install
кот Dockerfile_tc
FROM tomcat:8.0-jre8
# Create app directory
WORKDIR /usr/local/tomcat/bin
CMD ["catalina.sh", "run"]
EXPOSE 8080
докер-compose.yml
version: '3'
services:
maven:
container_name: maven-container
build:
context: .
dockerfile: Dockerfile
tomcat:
container_name: tomcat-container
build:
context: .
dockerfile: Dockerfile_tc
ports:
- "8080:8080"
А потом у меня есть файл.bat, и я запускаю несколько команд, чтобы скопировать мой военный файл в Tomcat...
cd C:\Users\Administrator\Project\mics-project
del "mics-project.war" >nul 2>&1
start docker cp maven-container:/mics-project/target/mics-project.war c:/Users/Administrator/Project/mics-project
start docker cp c:/Users/Administrator/Project/mics-project/mics-project.war tomcat-container:/usr/local/tomcat/webapps/
Оно работает! Но как я могу использовать тома в моем файле docker-compose.yml вместо выполнения этих команд?
1 ответ
Вы можете использовать тома непосредственно в файлах YAML
volumes:
- Path_on_local_pc:Path_on_container
этот блок будет под tomcat и параллельно для сборки и портов
tomcat:
container_name: tomcat-container
build:
context: .
dockerfile: Dockerfile_tc
ports:
- "8080:8080"
volumes:
- Path_on_local_pc:Path_on_container
Вы можете добавить также.
Ссылка для того же - https://www.linux.com/learn/docker-volumes-and-networks-compose
Я знаю, что этот ответ может быть поздно, но он может помочь другим. Если он содержит файл pom.xml. Затем вы можете создать один файл Docker для создания образа. Без необходимости выполнять другие команды
ОТ maven: 3.5-jdk-8 AS buildserver
WORKDIR / usr / mygitproject
git clone в путь контейнера
RUN git clone mygitproject / usr / mygitproject
WORKDIR / usr / mygitproject / src
построить проект
Выполнить mvn -f /usr/mygitproject /pom.xml очистить пакет -DskipTests
ОТ кота: последние
Скопируйте встроенный файл войны в папку webapps контейнера tomcat.
COPY --from=buildserver /usr/mygitproject /target/*.war /usr/local/tomcat/webapps