Как запустить простой скрипт на Python без написания полного файла Dockerfile?

#python #docker #dockerfile

#python #docker #dockerfile

Вопрос:

Я настроил Docker Toolbox на компьютере с Win 10. У меня есть несколько простых однофайловых скриптов Python, которые я хочу запустить в Docker, просто для обучения. Начал изучать Docker сегодня и Python 3 дня назад.

Я предполагаю, что я правильно настроил Docker, я могу запустить пример изображения hello-world. Нет сообщений об ошибках во время установки.

Я следую инструкции отсюда https://runnable.com/docker/python/dockerize-your-python-application , в котором говорится:

Если вам нужно запустить только простой скрипт (с одним файлом), вы можете избежать написания полного файла Dockerfile. В приведенных ниже примерах предположим, что вы сохраняете my_script.py в /usr/src/widget_app/, и вы хотите назвать контейнер my-first-python-script:

 docker run -it --rm --name my-first-python-script -v "$PWD":/usr/src/widget_app python:3 python my_script.py
 

Если я набираю pwd, он показывает:

 /c/Program Files/Docker Toolbox
 

И скрипт, который я хочу запустить, находится здесь:

 C:DockerPythonmy_script.py
 

Это то, что, я думаю, должно работать:

 docker run -it --rm --name my-first-python-script -v "$PWD":/c/Docker/Python python:3 python my_script.py
 

Независимо от того, как я пытаюсь указать каталог файла, я получаю сообщение об ошибке:

 python: can't open file 'my_script.py': [Errno 2] No such file or directory
 

Комментарии:

1. Контейнер ничего не знает о /c/Docker/Python каталоге. Вы можете назвать этот каталог внутри контейнера как угодно, но вам также нужна -w опция, чтобы установить текущий каталог внутри контейнера или указать абсолютный (на стороне контейнера) путь в качестве аргумента скрипта python .

2. (Хотя мне это не кажется особенно эффективным использованием Docker; было бы намного проще и удобнее для разработчиков просто использовать интерпретатор Python на вашем хосте.)

3. @DavidMaze Я знал, что это не очень хорошее использование Docker, но я решил, что все равно попробую, поскольку это было частью руководства. Однако мне любопытно, существуют ли какие-либо реальные варианты использования этого сценария?

Ответ №1:

При запуске вы -v "$PWD":/c/Docker/Python говорите, что хотите связать свой текущий рабочий каталог с путем /c/Docker/Python в контейнере, а это не то, что вы хотите сделать. То, что вы пытаетесь сделать, это связать C:DockerPython ваш хост с папкой контейнера /usr/src/widget_app .

Эта команда поместит ваш скрипт в путь к контейнеру /usr/src/widget_app , а затем запустит его:

 docker run -it --rm --name my-first-python-script -v /c/Docker/Python:/usr/src/widget_app python:3 python /usr/src/widget_app/my_script.py
 

Комментарии:

1. Спасибо! Теперь файл найден, но я получаю другую ошибку: /usr/local/bin/python: не удается найти ‘ main ‘ модуль в ‘/usr/src/my_script.py ‘А мой скрипт на python — это просто print («Привет, мир»), никаких используемых библиотек.

2. docker run -it —rm —name my-python-script -v /c/Docker/Python:/usr/src python:3 python /usr/src/my_script.py

3. Каков результат docker run -it --rm --name my-python-script -v /c/Docker/Python:/usr/src python:3 cat /usr/src/my_script.py ?