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

# 应用环境变量定义

这里针对Springboot应用

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

# kenaito-devops:release_[timestamp]

# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
最近更新: 2025-09-04
017基础镜像重构之Java应用基础镜像

2017 - 武林秘籍   |