无法为argparse在docker-compose文件中传递参数

时间:2019-04-05 15:14:16

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

我是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

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

1 个答案:

答案 0 :(得分:0)

我对Python不太了解,但是我可以看到yml中有些错误。

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