#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», потому что имя уже занято в моей системе.