定义


Dockerfile

Dockerfile是一个包含构建指令的文本文件,Docker 会根据其中的指令构建出一个镜像。

指令


指令示例描述
FROMFROM python:3.11-slim指定基础镜像
WORKDIRWORKDIR /app设置容器内的工作目录(后续指令在此目录下执行)
COPYCOPY target/demo.jar app.jar将宿主机的文件复制到容器中
RUNRUN mvn clean package在构建镜像时执行的命令
ENVENV JAVA_OPTS="-Xms256m -Xmx512m"设置环境变量
EXPOSEEXPOSE 8080声明容器暴露的端口(仅声明,只有用-p才会生效)
CMDCMD ["java", "-jar", "app.jar"]容器启动后的默认命令
ENTRYPOINTENTRYPOINT ["java", "-jar", "app.jar"]容器启动后的入口命令

例子


假设有一个Spring Boot项目,已经通过 Maven/Gradle 打包完成。

  • 本地生成了 target/myapp-0.0.1-SNAPSHOT.jar
  • 使用 JDK 17
  • 应用端口为 8080
# 1. 选择轻量的 JRE 基础镜像(推荐 Eclipse Temurin)
FROM eclipse-temurin:17-jre-alpine
 
# 2. 设置容器内工作目录
WORKDIR /app
 
# 3. 将本地打包好的 jar 文件复制到容器内并重命名
COPY target/*.jar app.jar
 
# 4. 暴露端口(与 application.yml/properties 一致)
EXPOSE 8080
 
# 5. 设置 JVM 环境变量(可选)
ENV JAVA_OPTS=""
 
# 6. 启动容器时的执行命令
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]