# 基础镜像
FROM openjdk:8-jre-alpine
# 设置工作目录
WORKDIR /u01/app/
# 声明构建参数(用于构建时传递JAR文件路径)
#ARG JAR_FILE
#COPY ${JAR_FILE} /u01/app/omsp/app.jar
copy omspflowgine.jar /u01/app/omspflowgine.jar
# 设置默认环境变量(可被docker run覆盖)
ENV JAVA_OPTS=""
ENV APP_PARAMS=""
ENV LOG_DIR="/var/log/app"
# 创建日志目录
RUN mkdir -p ${LOG_DIR}
# 挂载点声明
VOLUME ["/config", "/data", "/var/log/app"]
# 使用ENTRYPOINT+CMD组合实现参数覆盖
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /u01/app/omspflowgine.jar ${APP_PARAMS} > ${LOG_DIR}/omspflowgine.log 2>&1"]
构建及启动示例
#!/bin/bash
# 构建镜像(假设JAR文件在target目录)
docker build -t omspflowgine-image:1.0 --build-arg JAR_FILE=target/*.jar .
# 运行容器并动态配置
docker run -d --name omspflowgine-container \
-e JAVA_OPTS="-Dspring.profiles.active=prod -Xmx512m -Dnacos_server_addr=192.168.x.x:8848" \
-e APP_PARAMS="--server.port=8080" \
-v /host/config:/config \
-v /host/data:/data \
-v /host/logs:/var/log/app \
-p 8080:8080 \
omspflowgine-image:1.0
代码功能说明:
1、Dockerfile特点:
通过ARG接收构建时JAR文件路径
使用ENV定义可覆盖的默认环境变量
VOLUME声明挂载点便于数据持久化
ENTRYPOINT+sh -c组合支持参数扩展
2、启动脚本功能:
支持通过-e覆盖JVM参数和应用参数
通过-v挂载配置文件、数据目录和日志目录
日志重定向到挂载目录实现持久化
3、
使用方式:
构建时:./run.sh(会自动构建并运行)
动态配置:
JAVA_OPTS传递JVM参数如-D开头的系统属性
APP_PARAMS传递应用特定参数
挂载目录需提前在宿主机创建