Невозможно передать аргументы в файле docker-compose для argparse - PullRequest
0 голосов
/ 05 апреля 2019

Я новичок в среде докеров, у меня есть пример сценария, в котором я принимаю аргументы строки cmd через argparse и печатаю его.Код 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 голосов
/ 05 апреля 2019

Я мало что знаю о Python, но вижу, что в yml есть пара неправильных вещей.

  1. Не думаю, что вам нужен - перед env varкак у вас там.
  2. У вас нет правильного отступа для вашего env var.Похоже, это тот же отступ, что и "окружение".Ударьте это.
  3. Это может быть неактуально, потому что я не думаю, что ARG и переменные окружения являются синонимами.Таким образом, объявление OL, которое вы делаете в yml, не относится к объявлению ARG в Dockerfile или к его использованию в Python.Так что ваша проблема может лежать там, но опять же, я мало что знаю о Python, просто Docker.
...