如何在docker-compose的command配置段中使用定义的build arg参数
问题原因
build.args 定义的参数仅在镜像构建阶段生效,你写的 command 是容器启动后的运行阶段逻辑,默认无法读取构建阶段的参数值。
正确实现方式
有两种常用方案可选:
方案1:Dockerfile中转(推荐)
在你的Dockerfile中新增两行声明,把构建参数转成容器内可访问的环境变量:
# 放在Dockerfile的合适位置,尽量靠前 ARG environment ENV APP_ENV=$environment # 其余原有Dockerfile内容保持不变
修改docker-compose的command字段直接引用该环境变量即可:
command: > bash -c "python3 Main.py -env $APP_ENV"
方案2:docker-compose中直接透传
如果不想修改Dockerfile,可以在服务配置中直接把构建参数赋值给运行时环境变量:
version: '3.3' services: app: container_name: my_script image: my_script build: context: . dockerfile: Dockerfile args: - http_proxy=$HTTP_PROXY - https_proxy=$HTTPS_PROXY - environment # 新增运行时环境变量配置,把构建参数值透传过来 environment: - APP_ENV=${environment} volumes: - /home/me/PycharmProjects/myimportscript/logs:/app/logs command: > bash -c "python3 Main.py -env $APP_ENV"
内容的提问来源于stack exchange,提问作者Serge Zoghbi
相关产品推荐
相关产品推荐

