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

我尝试在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文件,即时通讯运行一些命令复制我的战争文件到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文件中使用卷,而不是执行这些命令?

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

 volumes: - Path_on_local_pc:Path_on_container 

这个块将在tomcat下并行构build和端口

 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