如何向docker-compose传递参数?我的Python脚本参数配置失效
问题原因与修改方案
当前配置无效的核心原因是:你在docker-compose.yml中使用的build.args是Docker镜像构建阶段的参数,而非容器运行时传递给Python脚本的命令行参数。同时你的docker-compose.yml还存在语法错误,需要先修正。
步骤1:修正docker-compose.yml的语法错误
原配置中build: .与下方的context: .重复,属于语法错误,需删除build: .,正确的build块格式如下:
version: "3.3" services: mm: container_name: mm stdin_open: true build: context: . dockerfile: Dockerfile
步骤2:传递运行时参数给Python脚本
有两种常用方案可选:
方案一:直接在command中指定脚本参数
修改docker-compose.yml,添加command字段,直接指定带参数的Python启动命令:
version: "3.3" services: mm: container_name: mm stdin_open: true build: context: . dockerfile: Dockerfile command: python3 main.py --strat 1
容器启动时会执行该命令,--strat 1会被传递给你的argparse脚本。
方案二:通过环境变量传递(更灵活)
如果需要更灵活的参数配置,可以用环境变量传递,同时修改Python脚本兼容环境变量:
- 修改
docker-compose.yml,添加环境变量:
version: "3.3" services: mm: container_name: mm stdin_open: true build: context: . dockerfile: Dockerfile environment: - STRAT=1
- 修改Python脚本,支持从环境变量读取默认值:
import argparse import os parser = argparse.ArgumentParser() parser.add_argument( '--strat', type=str, default=os.getenv('STRAT') # 从环境变量取默认值 ) args = parser.parse_args() strat = args.strat
这种方式既支持通过命令行传递--strat参数,也支持通过环境变量配置,适合需要动态调整参数的场景。
内容的提问来源于stack exchange,提问作者Nicolas Rey
相关产品推荐
相关产品推荐

