# 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 ```bash 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`: ```bash 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`: ```bash 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 глобально на машине.