Skip to main content

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

Эта команда:

  1. пересоберёт образы
  2. обновит контейнеры
  3. запустит сервисы

Шаг 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

Она:

  1. скачивает новые образы
  2. обновляет контейнеры

Это самый быстрый способ обновить сервис.


Полное обновление проекта

Если нужно полностью пересобрать контейнеры:

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

Этот процесс:

  1. обновляет код
  2. обновляет образы
  3. пересобирает контейнеры
  4. проверяет состояние сервисов

Частые ошибки при деплое

Пропуск шага 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-инфраструктуры.