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

Здравствуйте! У меня Python скрипт, который использует некоторые зависимости. Мне нужно сделать так, чтобы у меня была возможность при изменении этого скрипта запустить docker-container с уже установленными зависимостями и при этом, чтобы учитывались изменения в файле. Как лучше всего сделать?
  • Вопрос задан
  • 7729 просмотров
Пригласить эксперта
Ответы на вопрос 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. Правим код во внешней папке и запускаем его в контейнере ручками.
Добились, что код рабочий. Теперь можно создать имадж с приложением. Для этого правим докер файл для добавления копирования кода из папки в контейнер и запуска приложения. Билдим и тестируем имадж через создание контейнера. Заливаем имадж в докер репозиторий. На основе имаджа запускаем контейнер на внешнем хосте. "Грустим", что всё закончилось.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы