Files
docs/infrastructure/docker.md
T

2.6 KiB
Raw Blame History

Docker Compose

Compose-конфигурация разделена на несколько файлов в environments.

Файлы

  • docker-compose.networks.yml - public-network и internal-network.
  • docker-compose.dbs.yml - PostgreSQL и Redis.
  • docker-compose.apps.yml - nginx, php84, php82, nextjs.
  • docker-compose.dev.yml - Node.js helper-контейнер для разработки frontend-приложений.
  • docker-compose.monitoring.yml - node-exporter, php-fpm-exporter, Prometheus, Grafana.
  • docker-compose.jenkins.yml - Jenkins.

Make targets

make help

Основные цели:

  • make dev - dev-режим без мониторинга;
  • make up - prod-режим с мониторингом;
  • make down - остановка сервисов;
  • make restart - остановка и повторный запуск;
  • make clean - остановка и удаление volumes;
  • make prune - полная очистка Docker;
  • make chown-up - выставить владельцев для мониторинга и PostgreSQL data;
  • make chown-1000 - вернуть владельца 1000:1000;
  • make fix-certs - поправить права сертификатов nginx;
  • make rebuild-nextjs - пересобрать и перезапустить Next.js-контейнер.

Ручной запуск compose

Эквивалент make dev:

COMPOSE_PROJECT_ENV=dev COMPOSE_NODE_ENV=development \
docker compose --env-file .env \
  -f environments/docker-compose.networks.yml \
  -f environments/docker-compose.dbs.yml \
  -f environments/docker-compose.apps.yml \
  -f environments/docker-compose.dev.yml \
  up -d

Эквивалент make up:

COMPOSE_PROJECT_ENV=prod COMPOSE_NODE_ENV=production \
docker compose --env-file .env \
  -f environments/docker-compose.networks.yml \
  -f environments/docker-compose.dbs.yml \
  -f environments/docker-compose.apps.yml \
  -f environments/docker-compose.dev.yml \
  -f environments/docker-compose.monitoring.yml \
  up -d

Порты

  • 80, 443 - nginx.
  • 5432 - PostgreSQL.
  • 3001 - Next.js sovamed.
  • 3000 - Grafana.
  • 9090 - Prometheus.
  • 8080, 50000 - Jenkins.

Volumes и данные

PostgreSQL хранит данные в infrastructure/pgsql/data, Redis - в infrastructure/redis/data. Эти директории игнорируются git и не должны удаляться без необходимости.

make clean удаляет docker volumes, а make prune чистит Docker глобально на машине.