Docker — Production Deployment Workflow
Эта страница описывает рекомендуемый процесс обновления и развёртывания Docker-проектов на production-сервере. Здесь показан безопасный порядок действий при обновлении кода, образов и контейнеров, а также базовые проверки после деплоя. Материал ориентирован на начинающих и помогает выполнять обновления предсказуемо и без случайных простоев сервисов.
Что такое Deployment Workflow
Deployment Workflow — это последовательность действий, которую нужно выполнять при обновлении проекта.
Без чёткой процедуры часто возникают проблемы:
- контейнеры запускаются со старыми образами
- сервисы падают после обновления
- изменения не применяются
- ломается база данных
- проект уходит в простой
Поэтому важно использовать одинаковый и проверенный порядок действий.
Типичная структура проекта
Пример директории проекта:
/opt/flamy_projects/site1
docker-compose.yml
.env
Dockerfile
src/
Где:
| Файл | Назначение |
|---|---|
| docker-compose.yml | конфигурация сервисов |
| Dockerfile | инструкция сборки образа |
| .env | переменные окружения |
| src | исходный код приложения |
Стандартная процедура обновления проекта
Шаг 1 — перейти в директорию проекта
cd /opt/flamy_projects/site1
Проверить файлы:
ls -la
Важно убедиться, что вы находитесь в правильной директории проекта.
Шаг 2 — обновить код проекта
Если используется Git:
git pull
Команда скачивает последние изменения из репозитория.
Когда это нужно
- обновление приложения
- исправления ошибок
- новые функции
Шаг 3 — обновить Docker-образы
Если проект использует готовые образы из registry, нужно загрузить новые версии.
docker compose pull
Команда скачает новые версии образов, указанных в docker-compose.yml.
Шаг 4 — пересобрать контейнеры (если требуется)
Если изменились:
- Dockerfile
- зависимости
- системные пакеты
нужно пересобрать образ.
docker compose up -d --build
Эта команда:
- пересоберёт образы
- обновит контейнеры
- запустит сервисы
Шаг 5 — проверить состояние контейнеров
docker compose ps
Пример результата:
NAME STATUS
site1_nginx Up
site1_php Up
site1_mysql Up
Все сервисы должны иметь статус Up.
Шаг 6 — проверить логи
После обновления важно убедиться, что сервисы работают корректно.
docker compose logs --tail=50
В логах не должно быть:
- ошибок запуска
- ошибок подключения к базе
- критических ошибок приложения
Шаг 7 — проверить работу приложения
После деплоя рекомендуется проверить:
- доступность сайта
- работу API
- соединение с базой данных
- фоновые задачи (workers, cron)
Быстрое обновление проекта
На практике часто используется короткая команда:
docker compose pull && docker compose up -d
Она:
- скачивает новые образы
- обновляет контейнеры
Это самый быстрый способ обновить сервис.
Полное обновление проекта
Если нужно полностью пересобрать контейнеры:
docker compose build --no-cache
docker compose up -d
Это полезно, если:
- изменения не применяются
- образ собран неправильно
- нужно выполнить чистую сборку
Полный перезапуск проекта
Иногда требуется полностью остановить и заново запустить сервисы.
docker compose down
docker compose up -d
Это может помочь при:
- сетевых проблемах
- зависших контейнерах
- некорректном состоянии сервисов
Перезапуск одного сервиса
Если проблема только в одном сервисе:
docker compose restart nginx
Это быстрее и безопаснее, чем перезапуск всего проекта.
Откат версии (Rollback)
Если после обновления возникли проблемы, можно откатиться к предыдущей версии.
Пример:
git checkout <previous_commit>
docker compose up -d --build
Это восстановит предыдущую рабочую версию приложения.
Проверка после деплоя
После обновления рекомендуется выполнить несколько проверок.
Проверить контейнеры
docker ps
Это покажет все работающие контейнеры.
Проверить ресурсы
docker stats
Позволяет убедиться, что сервисы не перегружают сервер.
Проверить сети
docker network ls
Если сервисы не взаимодействуют — возможно проблема в сети.
Типичный production workflow
Чаще всего используется следующий порядок действий:
cd /opt/flamy_projects/site1
git pull
docker compose pull
docker compose up -d --build
docker compose ps
docker compose logs --tail=50
Этот процесс:
- обновляет код
- обновляет образы
- пересобирает контейнеры
- проверяет состояние сервисов
Частые ошибки при деплое
Пропуск шага pull
Если не выполнить docker compose pull, контейнеры могут запускаться со старыми образами.
Запуск команд не из директории проекта
Docker Compose работает с файлом docker-compose.yml, поэтому важно находиться в нужной папке.
Игнорирование логов
После деплоя всегда нужно проверять логи.
Использование latest в production
Лучше указывать фиксированные версии образов:
nginx:1.25
Это делает деплой более предсказуемым.
Краткая памятка
cd /opt/flamy_projects/project_name
git pull
docker compose pull
docker compose up -d --build
docker compose ps
docker compose logs --tail=50
docker compose restart <service>
docker compose down && docker compose up -d
Итог
Правильный workflow обновления Docker-проектов позволяет:
- безопасно обновлять сервисы
- быстро диагностировать проблемы
- минимизировать время простоя
Использование чёткой процедуры деплоя помогает поддерживать стабильную работу production-систем и упрощает администрирование Docker-инфраструктуры.