74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# 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 глобально на машине.
|