Как перенести Docker-приложение на новый VPS без простоя

Перенести Docker-приложение на новый VPS без заметного перерыва можно, если заранее скопировать данные, запустить приложение на новом сервере и проверить его до переключения трафика. Самый важный шаг — понять, где Docker хранит постоянные данные: в томах, bind mounts или внешней базе. Ниже — порядок переноса с коротким переключением и планом возврата, если новая площадка не запустится.
Что нужно подготовить перед переносом?
Составьте перечень контейнеров, сетей, томов и внешних зависимостей. Проверьте Docker Compose-файл, переменные окружения, сертификаты, задания по расписанию и подключение к базе данных. Секреты не помещайте в публичный репозиторий: сохраните их отдельно и передайте на новый VPS защищённым способом.
Убедитесь, что на новом сервере хватает ресурсов для приложения и его базы. Сравните операционную систему, архитектуру процессора и версии Docker. Если приложение зависит от конкретного драйвера или системной библиотеки, проверьте это до переноса.
Перед началом сделайте резервную копию томов и базы данных. Копирование файлов работающей базы без согласованного снимка может дать неполную копию. Для базы используйте её штатный инструмент резервирования либо остановите запись на время создания копии.
Как перенести Docker-образы и тома?
Если образы собираются из исходного кода, сохраните Dockerfile и конфигурацию сборки, затем соберите образ на новом VPS. Если доступ к исходникам ограничен или важно перенести именно готовую сборку, экспортируйте образ в архив и передайте его на новый сервер. После загрузки импортируйте архив в Docker и проверьте, что нужный тег появился в списке образов.
Тома с пользовательскими данными копируйте отдельно от образов: образ содержит файлы приложения, а том обычно хранит состояние, которое должно пережить пересоздание контейнера. Для переноса остановите запись в приложение или заморозьте изменения штатным способом, создайте архив тома, передайте его на новый VPS и восстановите в том с ожидаемым именем.
Если данные находятся в bind mount, проверьте путь в Compose-файле и права доступа. Каталог, который на старом сервере был доступен контейнеру, на новом может отсутствовать или принадлежать другому пользователю. Перед запуском сверьте владельца и разрешения для каждого такого пути.
Как проверить приложение до переключения трафика?
Запустите контейнеры на новом VPS, не меняя пока DNS или настройки балансировщика. Посмотрите состояние контейнеров и журналы запуска. Проверьте главную страницу, вход в систему, запись и чтение данных, загрузку файлов и фоновые задачи — выбирайте проверки по функциям конкретного приложения.
Для проверки сайта можно временно направить запросы на новый сервер через локальную настройку компьютера или воспользоваться тестовым доменом. Убедитесь, что приложение использует правильные адреса базы данных, очередей и внешних сервисов. Если сайт должен работать через HTTPS, заранее проверьте сертификат и перенаправление на защищённое соединение.
Подготовьте наблюдение за доступностью до переключения и после него. Например, мониторинг VPS для малого бизнеса помогает заметить, если сайт перестал отвечать после смены адреса. Дополнительные проверки можно настроить через мониторинг VPS в Telegram с Uptime Kuma.
Как переключить трафик и сохранить возможность отката?
Перед переключением снизьте TTL DNS-записи, если текущая настройка это позволяет. Затем остановите новые записи на старом сервере, выполните финальную синхронизацию данных и направьте трафик на новый VPS. Когда DNS обновится у пользователей, проверьте сайт и журналы приложения с нового сервера.
Не выключайте старый VPS сразу. Оставьте его доступным до проверки основных сценариев на новом сервере. Если приложение работает некорректно, верните прежний адрес в DNS или балансировщике и восстановите приём трафика на старой площадке. До завершения проверки не допускайте параллельную запись в две независимые копии базы: изменения могут разойтись.
Защитите новый сервер и ограничьте частоту запросов к веб-приложению, если оно доступно из интернета. Для Nginx практический вариант описан в материале о настройке Rate Limiting на VPS.
Какие ошибки чаще всего срывают перенос?
- Переносят образ, но забывают тома с базой, файлами или пользовательскими настройками.
- Запускают новую версию с неверными переменными окружения или адресом базы.
- Проверяют только открытие главной страницы и пропускают запись данных или фоновые задачи.
- Переключают DNS до финальной синхронизации, пока старый сервер ещё принимает изменения.
- Удаляют старый VPS до того, как проверили работу приложения и возможность отката.
Перед переносом запишите, где лежат данные и как восстановить резервную копию. Затем поднимите приложение на новом VPS без переключения трафика, проверьте ключевые функции и выполните финальную синхронизацию. Так вы заранее увидите ошибки конфигурации, а время переключения сведёте к необходимым действиям.


