user557657
user557657

Reputation: 896

How to pass args to docker run for python?

I edit my Dockerfile from the feedback I received. I run my python script with args python3 getappVotes.py --abc 116 --xyz 2 --processall This is my Dockerfile. I can build successfully but not sure how I can pass above args during docker run. Arguments are optional.

FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install \
        parse \
        argparse \
        datetime \
        urllib3  \
        python-dateutil \
        couchdb  \
        realpython-reader
RUN mkdir -p /var/log/appvoteslog/
COPY getappVotes.py .
ENTRYPOINT ["python", "./getappVotes.py"]
CMD ["--xx 116", "--yy 2", "--processall"]

Upvotes: 0

Views: 2344

Answers (1)

ErikMD
ErikMD

Reputation: 14723

As mentioned in the comments, for your use case, you need to use both ENTRYPOINT (for the program and mandatory arguments) and CMD (for optional arguments).

More precisely, you should edit your Dockerfile in the following way:

FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install \
        parse \
        argparse \
        datetime \
        urllib3  \
        python-dateutil \
        couchdb  \
        realpython-reader
RUN mkdir -p /var/log/appvoteslog/
COPY getappVotes.py .
ENTRYPOINT ["python", "./getappVotes.py"]
CMD ["--xx", "116", "--yy", "2", "--processall"]

(as from a shell perspective, --xx 116 is recognized as two separated arguments, not a single argument)

For more details:

Upvotes: 1

Related Questions