#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
?