2

我尝试在 docker 上使用 maven 和 tomcat 部署一个 java web 应用程序。我正在使用两个 Dockerfile,一个用于我的 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

tomcat 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 文件中使用卷而不是执行这些命令呢?

4

2 回答 2

0

我知道这个答案可能会迟到,但它可能会帮助其他人。如果它包含一个 pom.xml 文件。然后,您可以创建一个 docker 文件来构建映像。无需执行其他命令

FROM maven:3.5-jdk-8 AS buildserver

工作目录 /usr/mygitproject

git克隆到容器路径

运行 git clone mygitproject /usr/mygitproject

WORKDIR /usr/mygitproject /src

构建项目

运行 mvn -f /usr/mygitproject /pom.xml 清理包 -DskipTests

FROM tomcat:最新

将构建好的war文件复制到tomcat容器的webapps文件夹中

复制 --from=buildserver /usr/mygitproject /target/*.war /usr/local/tomcat/webapps

于 2019-01-16T14:47:55.843 回答
0

您可以直接在 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

于 2017-12-22T12:14:20.170 回答