【问题标题】:Unable to pass arguments in docker-compose file for argparse无法在 docker-compose 文件中为 argparse 传递参数
【发布时间】:2019-08-27 13:04:39
【问题描述】:

我是 docker 环境的新手,我有一个示例脚本,我通过 argparse 接受 cmd 行 args 并打印它。 Python代码如下:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-ol', '--old_file', type=str, help='path of a old file')

args = parser.parse_args()

print("Hello : " + str(args.old_file))

这是我的 dockerfile:

FROM python:3

COPY arguments_sample.py /arguments_sample.py

ARG ol

RUN echo $ol

ENTRYPOINT ["python", "arguments_sample.py"]

最后是我的 docker-compose.yml:

 version: '3'

services:
    python-service:
        build: ./docker_stage
        environment:
        - OL='Hello'
        volumes:
        - ./sample_api:/usr/src/app_sample

通常我可以如下运行python脚本:

python arguments_sample.py -ol Henry

它会将其打印为Hello : Henry

当我使用docker-compose up 时,它正在打印Hello : None

这可能是我无法弄清楚的错误语法。请帮助我!

【问题讨论】:

    标签: python-3.x docker docker-compose argparse


    【解决方案1】:

    我对 Python 了解不多,但我可以看到您在 yml 中有几处错误。

    1. 我认为您不需要像在 env var 前面那样的 -。
    2. 您的环境变量没有正确的缩进。看起来它与“环境”的缩进相同。顶一下。
    3. 这些可能无关紧要,因为我认为 ARG 和环境变量不是同义词。因此,您在 yml 中所做的 OL 声明不适用于 Dockerfile 中的 ARG 声明或您在 Python 中的使用。所以你的问题可能就在那里,但我对 Python 也不太了解,只是 Docker。

    【讨论】:

    • 我尝试按照您的建议进行适当的缩进仍然无法解决问题
    猜你喜欢
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多