Сайт ↗
Разделы документации
Эксплуатация · 0.8.1

Prod-local: запуск приложения в Docker

Подготовьте локальное окружение, запустите приложение через HTTPS и создайте администратора.

На этой странице

В prod-local backend, система администрирования и PostgreSQL работают в Docker. Интерфейс и API доступны через HTTPS. Это отдельное окружение: у него своя БД и свои изображения.

В примере окружение называется local. Выполняйте команды в корне сгенерированного проекта.

1. Подготовьте инструменты и файлы

Нужны Bash, jq и запущенный Docker с Compose и Buildx. Docker-клиент и сервер должны поддерживать API 1.49+ и image inspect --platform; для локальных образов включите containerd image store.

В Generator UI откройте Deployment, включите Docker и Production deployment. CI provider можно оставить None. Сохраните и выполните Generate.

2. Создайте профиль local в UI

В Deployment → Deployment environments введите New profile name: local, выберите Local production (Docker) и нажмите Add profile.

Оставьте домены admin.local.test и api.local.test, порты 8443 и 9443, если они свободны. Allowed HTTPS origins должен содержать https://admin.local.test:8443. Runtime directory, каталог local-медиа и локальных backup будут рассчитаны от папки проекта: вручную вписывать абсолютные пути не нужно. Для prod-local резервные копии остаются локальными.

Если для проекта выбран S3, заполните его параметры в профиле по инструкции S3. Адаптер хранения един для проекта.

Нажмите Save deployment settings, затем Generate. Профиль появится в deploy/generated/environments/local.json; пустой deploy/custom/environments/local.json пока оставьте без изменений. Копировать пример в deploy/environments/ не требуется. Если там уже есть local.json, импортируйте его в UI и уберите ручной файл после сохранения и генерации: иначе он продолжит перекрывать профиль.

3. Добавьте локальные адреса

Добавьте строку в hosts-файл ОС. На macOS/Linux это /etc/hosts; для редактирования нужны права администратора:

127.0.0.1 admin.local.test api.local.test

Освободите порты 8443 и 9443, если их использует другое приложение.

4. Подготовьте и запустите окружение

Выполняйте команды по очереди, дожидаясь успешного завершения каждой:

bash ./deploy/control provision --env local
bash ./deploy/control up --env local
bash ./deploy/control status --env local --json

provision собирает образы, создаёт каталоги, ключи и локальные сертификаты. up применяет миграции и запускает приложение. status показывает текущий релиз и готовность компонентов.

Если команда завершилась ошибкой, сначала разберите её по инструкции восстановления операций. Не удаляйте deploy/.state/local: там хранятся данные окружения.

5. Откройте интерфейс

Адрес системы администрирования — https://admin.local.test:8443, API — https://api.local.test:9443.

Добавьте deploy/.state/local/pki/ui-ca.crt в доверенные сертификаты своей ОС или браузера. Это публичный сертификат локального центра сертификации; приватный ключ импортировать не нужно. Без настройки доверия браузер будет предупреждать о сертификате.

6. Создайте первого суперадминистратора

Посмотрите имена запущенных контейнеров:

docker ps --format 'table {{.Names}}\t{{.Status}}'

Найдите backend именно окружения local: в имени обычно есть название проекта, local и backend. Скопируйте его имя и подставьте вместо ИМЯ_КОНТЕЙНЕРА:

docker exec -it ИМЯ_КОНТЕЙНЕРА admin bootstrap-superadmin --if-needed --login owner

Введите и повторите пароль длиной 12–128 байт UTF-8. Ввод скрыт. Если активный суперадминистратор уже есть, команда ничего не создаст. Войдите в интерфейс с этим аккаунтом: аккаунт Generator UI для него не подходит.

Остановка и повторный запуск

bash ./deploy/control down --env local
bash ./deploy/control up --env local

Остановка сохраняет БД, изображения и историю. up запускает уже записанную версию, а не собирает изменённые исходники.

Логи можно открыть так:

bash ./deploy/control logs --env local --service backend

Вместо backend доступны frontend и postgres.

Обновление

После изменения модели выполните Generate, затем соберите и примените новую версию:

bash ./deploy/control build --env local --output local-release-02.json
bash ./deploy/control deploy --env local --release local-release-02.json --confirm local

local-release-02.json создаст команда build. Не пишите его вручную; для следующей сборки выбирайте новое имя. Подробности — обновление приложения.