我尝试在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文件中使用卷而不是执行这些命令?
答案 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