Генератор Docker Compose для приложения и PostgreSQL

Генератор создаёт основу 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 и регулярное обновление образов всё равно необходимы.

Запуск и проверка

  1. Проверьте итоговый файл командой docker compose config.
  2. Соберите и запустите сервисы: docker compose up -d --build.
  3. Посмотрите состояние через docker compose ps.
  4. Проверьте журналы приложения: docker compose logs --tail=100 app, заменив имя сервиса при необходимости.
  5. Перед обновлением базы сделайте и протестируйте резервную копию.

Что уже учтено

Политика unless-stopped возвращает контейнер после перезапуска Docker, а no-new-privileges запрещает процессам получать дополнительные привилегии. Для PostgreSQL добавлен постоянный том и healthcheck; приложение запускается после готовности базы. Это полезная основа, но Dockerfile также должен запускать процесс от непривилегированного пользователя и содержать только необходимые зависимости.

Что настроить для production

Закрепите версии образов, настройте ротацию журналов, мониторинг, лимиты ресурсов и автоматизированные резервные копии. Секреты лучше передавать средствами платформы или из защищённого хранилища. Перед обновлением читайте release notes и проверяйте сборку на тестовой среде. Актуальная структура файла описана в официальной Compose Specification.

Где разместить проект

Для сайтов, ботов и pet-проектов можно использовать Beget: виртуальный хостинг от 420 ₽/мес., VPS от 330 ₽/мес. и тестовый период.

Перейти на Beget →


Нужно настроить сервер, сайт или автоматизацию?

Разберём задачу по VPS/Linux, DNS, WordPress, Telegram-ботам и интеграциям. Стоимость определяется после оценки объёма.

Обсудить задачу → 8 918 532 81 08