Генератор создаёт основу compose.yaml для приложения, собираемого из текущего каталога. Порт публикуется только на 127.0.0.1, чтобы приложение можно было безопасно поставить за Nginx. По желанию добавляется PostgreSQL. Всё выполняется локально в браузере.
Какие файлы понадобятся
Рядом с compose.yaml должен находиться Dockerfile приложения и файл .env. Не добавляйте .env в Git, если в нём есть пароли или ключи. Если включена база данных, задайте как минимум POSTGRES_DB, POSTGRES_USER и POSTGRES_PASSWORD. Для приложения добавьте отдельную строку подключения к сервису с именем database, а не к localhost.
Почему порт привязан к 127.0.0.1
Запись вида 127.0.0.1:8000:8000 делает порт доступным на самом сервере, но не публикует его на всех внешних интерфейсах. Nginx может обращаться к нему локально и принимать публичный трафик через 80/443. Это уменьшает открытую поверхность, однако firewall и регулярное обновление образов всё равно необходимы.
Запуск и проверка
- Проверьте итоговый файл командой
docker compose config. - Соберите и запустите сервисы:
docker compose up -d --build. - Посмотрите состояние через
docker compose ps. - Проверьте журналы приложения:
docker compose logs --tail=100 app, заменив имя сервиса при необходимости. - Перед обновлением базы сделайте и протестируйте резервную копию.
Что уже учтено
Политика unless-stopped возвращает контейнер после перезапуска Docker, а no-new-privileges запрещает процессам получать дополнительные привилегии. Для PostgreSQL добавлен постоянный том и healthcheck; приложение запускается после готовности базы. Это полезная основа, но Dockerfile также должен запускать процесс от непривилегированного пользователя и содержать только необходимые зависимости.
Что настроить для production
Закрепите версии образов, настройте ротацию журналов, мониторинг, лимиты ресурсов и автоматизированные резервные копии. Секреты лучше передавать средствами платформы или из защищённого хранилища. Перед обновлением читайте release notes и проверяйте сборку на тестовой среде. Актуальная структура файла описана в официальной Compose Specification.
Для сайтов, ботов и pet-проектов можно использовать Beget: виртуальный хостинг от 420 ₽/мес., VPS от 330 ₽/мес. и тестовый период.
Разберём задачу по VPS/Linux, DNS, WordPress, Telegram-ботам и интеграциям. Стоимость определяется после оценки объёма.
