Задать вопрос

Как правильно использовать Docker для выполнения Python файла?

Здравствуйте! У меня Python скрипт, который использует некоторые зависимости. Мне нужно сделать так, чтобы у меня была возможность при изменении этого скрипта запустить docker-container с уже установленными зависимостями и при этом, чтобы учитывались изменения в файле. Как лучше всего сделать?
  • Вопрос задан
  • 7745 просмотров
Подписаться 10 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Посмотрите здесь: https://hub.docker.com/_/python/
Если в двух словах, то вы можете:
1. Создать свой образ, основанный на выбранной версии пайтона с установленными нужными вашему скрипту зависимостями и запустить контейнер с примонтированным скриптом.
2. Или собрать новый образ просто добавив в него скрипт. Так как зависимости уже были добавлены до этого, то шаг установки зависимостей докер пропустит и новый образ будет готов практически моментально.

Пример образа:
FROM python:3-alpine
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

Пример запуска скрипта:
docker build -t docker-test .
docker run -it --rm --name my-running-script -v ${PWD}:/usr/src/app docker-test python your-daemon-or-script.py
Ответ написан
Комментировать
1. Делаем контейнер на образе нужной версии python.
2. "Заходим" в него.
3. Устанавливаем нужные пакеты через pip.
4. Делаем pip freeze.
5. Копируем вывод во внешний requirements.txt
6. Выходим из контейнера.
7. Прописываем в докер файл копирование файла requirements.txt в контейнер.
8. Прописываем в докер файл команду установки зависимостей через pip из requirements.txt
9. Билдим контейнер по новой.
10. Для запуска контейнера добавляем связь внешней папки с папкой в контейнере через монтирование.
11. Запускаем контейнер.
12. "Заходим" в контейнер.
13. Правим код во внешней папке и запускаем его в контейнере ручками.
Добились, что код рабочий. Теперь можно создать имадж с приложением. Для этого правим докер файл для добавления копирования кода из папки в контейнер и запуска приложения. Билдим и тестируем имадж через создание контейнера. Заливаем имадж в докер репозиторий. На основе имаджа запускаем контейнер на внешнем хосте. "Грустим", что всё закончилось.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы