将WAR包部署到Docker容器中通常有两种主要方法,下面我将详细介绍每种方法。
这是最常见的方法,使用官方Tomcat镜像作为基础镜像。
FROM tomcat:9.0-jdk11-openjdk
# 删除默认的ROOT应用(可选)
RUN rm -rf /usr/local/tomcat/webapps/ROOT
# 复制WAR文件到容器中
COPY your-application.war /usr/local/tomcat/webapps/ROOT.war
# 如果需要额外的配置
# COPY config.properties /usr/local/tomcat/conf/
# 暴露Tomcat默认端口
EXPOSE 8080
# 容器启动时运行Tomcat
CMD ["catalina.sh", "run"]
docker build -t your-app-name .
docker run -d -p 8080:8080 --name your-app-container your-app-name
如果你的应用使用嵌入式服务器(如Spring Boot),可以这样做:
FROM openjdk:11-jre-slim
# 创建工作目录
WORKDIR /app
# 复制WAR文件到容器中
COPY your-application.war /app/your-application.war
# 暴露应用端口
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java", "-jar", "your-application.war"]
构建和运行命令与方法一相同。
自定义Tomcat配置:
COPY server.xml /usr/local/tomcat/conf/
COPY context.xml /usr/local/tomcat/conf/
添加环境变量:
ENV SPRING_PROFILES_ACTIVE=production
使用多阶段构建(适用于需要编译的情况):
FROM maven:3.6.3-jdk-11 AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM tomcat:9.0-jdk11-openjdk
COPY --from=build /usr/src/app/target/*.war /usr/local/tomcat/webapps/ROOT.war
挂载外部配置文件:
docker run -d -p 8080:8080 -v /path/to/config:/config your-app-name
WAR文件名决定了应用上下文路径:
ROOT.war
→ 根路径 (/
)app.war
→ /app
对于生产环境,考虑:
如果应用需要连接数据库或其他服务,确保正确配置网络连接。
希望这些信息对你有帮助!如果你有特定的应用需求或遇到问题,可以提供更多细节,我可以给出更具体的建议。