Docker передать аргументы командной строки - PullRequest
1 голос
/ 26 февраля 2020

Я действительно хочу передать аргумент через docker run Мой Dockerfile:

FROM python:3

# set a directory for the app
WORKDIR /usr/src/app

# copy all the files to the container
COPY . .

# install dependencies
RUN pip install --no-cache-dir -r requirements.txt

# tell the port number the container should expose
EXPOSE 5000

# run the command
CMD ["python", "./app.py"]

Мой python файл:

import sys
print(sys.argv)

Я пытался:

docker run myimage foo

Я получил ошибку:

  flask-app git:(master) ✗ docker run myimage foo
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"foo\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled

1 Ответ

2 голосов
/ 26 февраля 2020

Когда вы пишете foo в конце вашей команды docker run , вы перезаписываете всю команду. Поэтому вместо

python app.py

вы звоните

foo

Правильный способ вызова вашего скрипта с аргументами:

docker run myimage python app.py foo

В качестве альтернативы вы можете использовать ENTRYPOINT вместо CMD и тогда ваша docker команда run может содержать только foo после имени изображения

Dockerfile:

FROM python:3

# set a directory for the app
WORKDIR /usr/src/app

# copy all the files to the container
COPY app.py .

# run the command
ENTRYPOINT ["python", "./app.py"]

, вызывая его:

docker run myimage foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...