Docker представляет собой платформу, которая позволяет запускать приложения в контейнерах, изолированных от хост-системы. Это решение помогает хранить и запускать программу вместе с необходимыми зависимостями в единый блок, и его будет достаточно просто переносить и задействовать в различных окружениях.
Запуск Python в контейнере Docker
Чтобы поднять приложение на Python внутри Docker-контейнера, создайте файл Dockerfile. Этот файл будет указывать на базовый образ Python из репозитория Docker Hub, а также включать ваши исходники и зависимости.
Пример Dockerfile для Python:
# Базовый слой — официальный образ Python версии 3.11 FROM python:3.11-slim # Установка рабочего каталога WORKDIR /app # Копирование файлов вашего проекта в контейнер # Установка зависимостей # Определение команды для запуска проекта CMD ["python", "main.py"]
Docker Compose облегчает запуск приложений, состоящих из нескольких сервисов. К примеру, посредством него можно одновременно запустить Python-сервис и базу данных.
Пример docker-compose.yml:
version: '3.8' services: web: build: . ports: - "4000:4000" volumes: - .:/app command: python main.py
При запуске такого контейнера произойдёт запуск файла main.py на порту 4000.
Создание приложения на Flask
Давайте создадим тестовое приложение на Flask, работающее на порту 4000:
Файл с зависимостями будет очень простой:
Пример requirements.txt
Flask==2.3.3
Пример main.py
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Docker!" if __name__ == '__main__': app.run(host='0.0.0.0', port=4000)
Инструкция по запуску
Docker и Docker Compose должны быть предварительно установлены.
Создайте перечисленные выше файлы в одной папке.
Откройте терминал и переместитесь в вашу папку.
Введите команду `docker-compose up`(если не работает - попробуйте `docker compose up`).
После запуска, ваше приложение на Flask будет доступно по адресу http://localhost:4000.
Docker может значительно упростить процесс запуска приложений на Python, обеспечивая согласованность и предсказуемость окружения — что особенно актуально в современном мире программной разработки.