
准备Java应用 确保Java应用已编译为可执行的JAR或WAR文件。例如使用Maven或Gradle构建:
mvn clean packagegradle build创建Dockerfile
在项目根目录下创建名为Dockerfile的文件,无需后缀。以下是基于不同场景的配置示例:
# 使用官方OpenJDK镜像作为基础
FROM eclipse-temurin:17-jdk-jammy
# 设置工作目录
WORKDIR /app
# 将构建的JAR文件复制到容器中
COPY target/your-application.jar app.jar
# 暴露应用端口(根据实际修改)
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]FROM eclipse-temurin:11-jre
WORKDIR /app
COPY target/myapp.jar /app
COPY config.properties /app/config # 可选:配置文件
CMD ["java", "-jar", "myapp.jar"]FROM tomcat:9.0
# 删除默认ROOT应用
RUN rm -rf /usr/local/tomcat/webapps/ROOT
# 复制WAR文件到Tomcat
COPY target/your-webapp.war /usr/local/tomcat/webapps/ROOT.war
# 暴露Tomcat端口
EXPOSE 8080构建镜像 在Dockerfile所在目录执行:
docker build -t java-image-name .运行容器
docker run -p 8080:8080 -d java-image-name-p:端口映射(主机端口:容器端口)-d:后台运行多阶段构建 减少最终镜像大小,丢弃构建阶段的依赖:
FROM eclipse-temurin:17-jdk AS builder
WORKDIR /app
COPY . .
RUN ./gradlew build
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=builder /app/build/libs/app.jar .
ENTRYPOINT ["java", "-jar", "app.jar"]环境变量配置
通过ENV传递动态参数:
ENV SPRING_PROFILES_ACTIVE=prod健康检查 添加容器健康检查:
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8080/actuator/health || exit 1时区问题 在Dockerfile中设置时区:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime内存限制 启动时指定JVM内存参数:
docker run -e JAVA_OPTS="-Xmx512m" -p 8080:8080 your-image通过以上步骤和示例,可以快速将Java应用容器化并部署到Docker环境中。