You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用docker-compose基于现有镜像构建带参数指定配置的衍生镜像

实现方案

下面是完全符合你需求的实现方式,无需挂载配置,生成的镜像可直接运行,后续更新配置只需重新构建即可:

方案一:docker-compose + Dockerfile 实现

步骤1:创建Dockerfile

在项目根目录新建Dockerfile,内容如下:

# 基于公司通用pepsr基础镜像
FROM pepsr
# 接收构建传入的环境名称参数
ARG INSTALL_NAME
# 复制对应环境的配置文件到容器指定路径
COPY ${INSTALL_NAME}.installation.config.json installation.config.json

步骤2:创建docker-compose.yml

在项目根目录新建docker-compose.yml,内容如下:

version: '3.8'
services:
  pepsr:
    build:
      context: .
      args:
        - INSTALL_NAME=${INSTALL_NAME}
    # 生成的镜像名称按规则拼接
    image: pepsr-${INSTALL_NAME}

步骤3:编写makeRelease.sh脚本

#!/bin/bash
# 参数校验
if [ $# -ne 1 ]; then
    echo "用法:./makeRelease <环境名称>"
    exit 1
fi
# 导出环境变量供docker-compose读取
export INSTALL_NAME=$1
# 执行构建,--no-cache确保每次构建都拉取最新配置
docker-compose build --no-cache
# 若需自动推送镜像到内部仓库可放开下面这行
# docker-compose push

使用方式

将所有环境的配置文件(如harvard.installation.config.json)放在项目根目录,执行./makeRelease harvard即可自动生成pepsr-harvard镜像。

方案二:轻量脚本实现(无需额外维护compose和Dockerfile)

如果不想维护多余的配置文件,可以直接用单行构建命令封装脚本,makeRelease.sh内容如下:

#!/bin/bash
if [ $# -ne 1 ]; then
    echo "用法:./makeRelease <环境名称>"
    exit 1
fi
INSTALL_NAME=$1
# 直接通过标准输入传入Dockerfile内容完成构建
docker build -t pepsr-${INSTALL_NAME} -f- . <<EOF
FROM pepsr
COPY ${INSTALL_NAME}.installation.config.json installation.config.json
EOF

两种方案均满足你的要求:

  • 生成的镜像为全集成版本,无需额外挂载配置,直接拉取即可运行
  • 后续更新配置只需替换对应环境的配置文件,重新执行构建脚本即可

内容的提问来源于stack exchange,提问作者Stéphane de Luca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:45:03