Docker Compose - 使用卷在tomcat上运行java Web应用程序(war文件)

时间:2017-12-22 11:59:37

标签: tomcat docker docker-compose war volumes

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

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文件并运行一些命令将我的war文件复制到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文件中使用卷而不是执行这些命令?

2 个答案:

答案 0 :(得分:0)

您可以直接在YAML文件中使用卷

volumes:
  - Path_on_local_pc:Path_on_container

这个块将在tomcat下并且与build和ports

并行
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

答案 1 :(得分:0)

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

  

FROM maven:3.5-jdk-8 AS构建服务器

     

WORKDIR / usr / mygitproject

git克隆到容器路径

  

运行git clone mygitproject / usr / mygitproject

     

WORKDIR / usr / mygitproject / src

构建项目

  

运行mvn -f / usr / mygitproject /pom.xml清洁程序包-DskipTests

     

从tomcat:最新

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

  

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