Как использовать python с docker глобально?

#python #bash #docker #shell

#python #bash #docker #оболочка

Вопрос:

Я написал небольшой скрипт

 #!/bin/bash

docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 $(realpath $1)
 

При этом я хочу иметь возможность вызывать сценарии, такие как python3 myscript.py

Однако я получаю сообщение об ошибке

 docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "/absolute/path/to/file.py": stat /absolute/path/to/file.py: no such file or directory: unknown.
 

Итак, я попытался создать псевдоним в своем .bashrc

 alias python3='docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3'
 

Здесь я получаю следующую ошибку

 docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "myscript.py": executable file not found in $PATH: unknown.
 

Я далеко не эксперт по bash, но в чем может быть причина этой ошибки? Что я сделал не так?

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

1. Похоже, вы хотите использовать Python напрямую, а не через изолированный контейнер Docker. Вы используете собственный хост Linux или macOS; у него уже установлен Python, который вы можете использовать?

Ответ №1:

В bash решение будет

 #!/bin/bash

docker run -it --rm --name my-running-script --entrypoint python -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 $1
 

использование: python3 myscript.py

как псевдоним в моем .bashrc

 alias run_py3='docker run -it --rm --name my-running-script --entrypoint python -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3'
 

использование: run_py3 myscript.py

Для псевдонима я не мог использовать «python3», потому что имя уже занято в моей системе.