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

Другие вопросы по тегам