Изображение python Docker: Как выполнить несколько скриптов одновременно?

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