Docker стал неотъемлемой частью современного процесса разработки и развертывания приложений. Платформа позволяет объединить все зависимости и компоненты в единый контейнер, который можно запускать в любом окружении. Это руководство поможет вам развернуть простое Python приложение, используя Docker.
Что такое Docker?
Docker — это платформа для контейнеризации, аналогичная виртуальным машинам, но значительно более легковесная. Контейнер содержит всю необходимую среду для выполнения приложения: системные библиотеки, зависимости и конфигурационные файлы.
Преимущества контейнеризации:
- Изоляция: Приложение и его зависимости изолированы друг от друга и от системы.
- Портативность: Контейнеры можно развернуть на любой машине с установленным Docker.
- Эффективность: Контейнеры используют ресурсы более эффективно по сравнению с виртуальными машинами.
Установка Docker
Поддерживаемые операционные системы
Docker поддерживается на различных платформах, включая Windows, macOS и Linux.
Пошаговая инструкция по установке Docker
Windows:
- Скачайте Docker Desktop с официального сайта.
- Установите и запустите Docker Desktop.
- Настройте параметры по умолчанию.
macOS:
- Скачайте Docker Desktop с официального сайта.
- Переместите Docker.app в папку Applications и запустите его.
- Следуйте инструкциям на экране для завершения установки.
Linux:
- В терминале выполните команду:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- Запустите и добавьте Docker в автозагрузку:
sudo systemctl start docker
sudo systemctl enable docker
Проверка установки и запуск Hello World контейнера
После установки Docker, выполните следующую команду для проверки:
docker run hello-world
Создание Python приложения
Мы будем использовать Flask для создания простого веб-приложения.
Создайте файл app.py
со следующим содержимым:
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
"""
Возвращает приветствие.
"""
return 'Hello, Docker!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Этот код создает Flask-приложение с одним маршрутом /hello
, который возвращает текст «Hello, Docker!».
Создание Dockerfile
Что такое Dockerfile?
Dockerfile — это скрипт с инструкциями для создания Docker образа. Он позволяет автоматизировать процесс создания образа и делает его воспроизводимым.
Пошаговое создание Dockerfile
Создайте файл Dockerfile
со следующим содержимым:
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Этот Dockerfile выполняет следующие шаги:
- FROM: Указывает базовый образ с Python 3.9.
- WORKDIR: Устанавливает рабочий каталог.
- COPY: Копирует
requirements.txt
в рабочий каталог. - RUN: Устанавливает зависимости из
requirements.txt
. - COPY: Копирует все файлы из текущего каталога в контейнер.
- CMD: Указывает команду для запуска приложения.
Сборка и запуск Docker контейнера
Сборка образа
Выполните следующую команду для сборки Docker образа:
docker build -t my-python-app .
Запуск контейнера
Для запуска контейнера выполните команду:
docker run -p 5000:5000 my-python-app
Эта команда пробрасывает порт 5000 контейнера на порт 5000 хоста.
Тестирование приложения
Чтобы проверить работоспособность приложения, откройте браузер и перейдите по адресу http://localhost:5000/hello
или используйте curl
:
curl http://localhost:5000/hello
Вы должны увидеть ответ Hello, Docker!
.
Устранение распространенных проблем
Ошибки при запуске контейнера
Если контейнер не запускается, используйте команду docker logs
для диагностики проблемы:
docker logs <container_id>
Повторное создание образа
Если вы изменили исходный код или зависимости, не забудьте пересобрать образ:
docker build -t my-python-app .
Заключение
В этом руководстве мы рассмотрели процесс создания Docker образа для простого Python приложения и его развертывания в контейнере. Docker позволяет легко управлять зависимостями и изолировать окружение, что делает процесс разработки и развертывания более надежным и эффективным.