#python #docker
#python #docker
Вопрос:
Я использую изображение python для запуска нескольких скриптов python 3 каждые несколько минут. Но таким образом мне приходится запускать контейнер несколько раз.
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python dwhproxy.py writeweather "Hannover,de"
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python dwhproxy.py writetwitter "MarcTV"
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python dwhproxy.py writeyoutube
Есть ли лучшая практика, чтобы избежать этого?
Ответ №1:
Я не вижу ничего плохого в выполнении одноразовых команд python так, как вы это делаете. --rm
Опция очистит эти контейнеры для одной задачи.
Я предполагаю, что ваши контейнеры запускаются почти мгновенно, поэтому время запуска также не должно быть проблемой для вас.
Однако, если вы хотите запустить контейнер и сохранить его работоспособным, вы можете добиться этого следующим образом:
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 tail -f /dev/null
Затем вы можете получить идентификатор запущенного контейнера python:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b91c8df3d12 python:3 "tail -f /dev/null" 2 seconds ago Up 1 second suspicious_joliot
и выполняйте команды python в одном контейнере, одну за другой:
docker exec 0b91c8df3d12 python dwhproxy.py writeweather "Hannover,de"
docker exec 0b91c8df3d12 python dwhproxy.py writetwitter "MarcTV"
docker exec 0b91c8df3d12 python dwhproxy.py writeyoutube
или все в одном кадре:
docker exec ad9ae8d67290 sh -c 'python dwhproxy.py writeweather "Hannover,de" amp;amp; python dwhproxy.py writetwitter "MarcTV" amp;amp; python dwhproxy.py writeyoutube'
или даже с вашим первоначальным подходом при выполнении всех трех сценариев:
docker run -it --rm python:3 sh -c 'python dwhproxy.py writeweather "Hannover,de" amp;amp; python dwhproxy.py writetwitter "MarcTV" amp;amp; python dwhproxy.py writeyoutube'