Ответ вслух Middle Docker Compose обновлено

Compose для прода на одном сервере

Вопрос

Ты поднимаешь приложение, базу и Redis на одном сервере через Compose. Что сделаешь, чтобы это было надёжно?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образы закрепляю точными версиями, чтобы на сервере крутилось ровно то, что проверено. Данные базы и Redis в именованных томах, бэкап базы pgdump по таймеру с выгрузкой за пределы сервера и проверкой восстановления.

Что должно прозвучать в ответе

  • Точные версии образов, а не `latest`

  • Тома для данных, бэкапы средствами СУБД, никаких `down -v`

  • Не публиковать порты базы и Redis, наружу только reverse proxy на 80/443

  • healthcheck и `depends_on: condition: service_healthy`, приложение умеет переподключаться

  • `restart: unless-stopped`, лимиты памяти и CPU, ротация логов

  • Секреты в `.env` с правами 600 вне репозитория или `secrets:`, проверка `docker compose config`

Что могут спросить следом

  • Как обновить приложение с минимальным простоем?
  • Как сделать бэкап базы из compose?
  • Где хранить .env?

Разбор

Образы закрепляю точными версиями, чтобы на сервере крутилось ровно то, что проверено. Данные базы и Redis в именованных томах, бэкап базы pg_dump по таймеру с выгрузкой за пределы сервера и проверкой восстановления. Порты базы и Redis не публикую вообще: приложение ходит к ним по внутренней сети по именам сервисов, а наружу смотрит только reverse proxy на 80 и 443. У базы healthcheck, у приложения depends_on с service_healthy и повторы подключения в коде. Всем сервисам restart: unless-stopped, лимиты памяти, ротация json-логов max-size и max-file. Секреты в .env с правами 600, которого нет в git, или через secrets:. Обновление: docker compose pull, затем up -d для конкретного сервиса; для нулевого простоя нужен второй экземпляр за прокси или схема blue-green. И держу в голове, что down -v удаляет данные.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.