Skip to content

基础镜像重构之Java应用基础镜像

应用环境变量定义

这里针对Springboot应用

  • APP_NAME 应用名称是什么,用于找到构建产物
  • APP_ENV 用哪一个配置文件
  • CONFIG_APP_ID 配置中心应用id
  • CONFIG_CACHE_DIR 配置缓存文件夹
  • ARTIFACT_URL 构建产物地址

kenaito-devops:release_[timestamp]

shell
# Dockerfile
cat > Dockerfile << 'EOF'
# 阶段1:下载并解压
FROM kenaito-alpine:3.18 AS extractor
ARG ARTIFACT_URL
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add --no-cache tar curl && \
    curl -sLO $ARTIFACT_URL && \
    tar -xzf *gz -C /tmp && \
    rm -f *gz

# 阶段2:构建应用镜像
FROM kenaito-runtime:jdk11
ARG APP_NAME
ARG APP_ENV
ARG CONFIG_APP_ID
ARG CONFIG_CACHE_DIR=/home/admin/app/config
# 从阶段1拷贝产物
COPY --from=extractor /tmp/$APP_NAME.jar /home/admin/app/
# 定义环境变量
ENV APP_NAME=$APP_NAME
ENV APP_ENV=$APP_ENV
ENV CONFIG_APP_ID=$CONFIG_APP_ID
ENV CONFIG_CACHE_DIR=$CONFIG_CACHE_DIR
# 应用所在目录
WORKDIR /home/admin/app
# 声明卷
VOLUME /home/admin/app/logs
VOLUME $CONFIG_CACHE_DIR
EOF

# 构建镜像(docker可换成buildah)
docker build \
-f Dockerfile \
--build-arg APP_NAME=kenaito-devops \
--build-arg APP_ENV=daily \
--build-arg CONFIG_APP_ID=kenaito-devops \
--build-arg ARTIFACT_URL=http://192.168.162.115:9000/kenaito-devops/artifacts/kenaito-devops_demo.tgz \
-t kenaito-devops:release_202509022013 .
if [ $? -ne 0 ]; then
  echo "构建镜像失败"
  exit 1
fi

# 运行测试
docker run kenaito-devops:release_202509022013