# 基礎鏡像
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傳遞應用特定參數
掛載目錄需提前在宿主機創建