docker打包java应用
假设我已经构建好了一个jar包
Dockerfile 内容
# 使用 OpenJDK 17 作为基础镜像
FROM eclipse-temurin:17-jdk-alpine
# 设置工作目录
WORKDIR /app
# 拷贝 jar 包到容器中
COPY credit-web.jar app.jar
# 设置容器启动时的命令
ENTRYPOINT ["java", "-Xms512m", "-Xmx512m", "-jar", "app.jar"]
# ENTRYPOINT ["java", "-Xms512m", "-Xmx512m", "-jar", "app.jar", "--spring.profiles.active=dev"]
打包命令
docker build -t credit-web:v0.0.1 .
加参数的Dockerfile
# 使用 OpenJDK1.8作为基础镜像
FROM eclipse-temurin:8-jdk-alpine
# 声明构建参数(无默认值)
ARG JAR_FILE
# 设置工作目录
WORKDIR /app
# 拷贝传入的 JAR 文件,并命名为 app.jar
COPY ${JAR_FILE} app.jar # 构建时作为变量传入
COPY ebc-gateway-dev.yaml .
# 启动命令
# ENTRYPOINT ["java", "-Xms512m", "-Xmx512m", "-jar", "app.jar"]
ENTRYPOINT ["java", "-Xms512m", "-Xmx512m", "-jar", "app.jar", "--spring.config.location=/app/ebc-gateway-dev.yaml", "--spring.profiles.active=dev", "--spring.cloud.nacos.server-addr=mse-7e6f2c50-p.nacos-ans.mse.aliyuncs.com:8848","--spring.application.name=ebc-gateway","--spring.cloud.nacos.discovery.namespace=zhangxiaozhao"]
参数解释:
--spring.config.location=/app/ebc-gateway-dev.yaml # 指定配置文件
--spring.profiles.active=dev # 指定环境
--spring.cloud.nacos.server-addr=mse-7e6f2c50-p.nacos-ans.mse.aliyuncs.com:8848 # 指定nacos地址
--spring.application.name=ebc-gateway # 指定应用名字
--spring.cloud.nacos.discovery.namespace=zhangxiaozhao # 指定命名空间ID
构建
docker build -t ebc-gateway:v004 --build-arg JAR_FILE=ebc-gateway.jar .