diff --git a/README.md b/README.md index 7551e8d..4d16510 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,9 @@ POSTGRES_PASSWORD=надежный-пароль-бд 1. В Dokploy Domain укажите сервис **`panel`**, порт **`8000`** (не `postgres`). 2. Откройте логи сервиса `panel` — должны быть строки `Database is ready` и `Starting uvicorn`. 3. Ошибка `Name or service not known` значит `panel` не видит хост БД: - - оба сервиса должны быть в сети `dokploy-network` (уже в compose); - - на сервере один раз: `docker network create dokploy-network` (Dokploy обычно создаёт сам); - - если сервис БД называется иначе — задайте `POSTGRES_HOST=<имя сервиса>`. + - `panel` и `postgres` связаны через внутреннюю сеть `vpn_internal`; + - `panel` также в `dokploy-network` для домена; + - если БД внешняя (Dokploy Postgres) — задайте `POSTGRES_HOST` на её хост. 4. Redeploy после правок. Админ при каждом старте **синхронизируется из ENV**. diff --git a/docker-compose.yml b/docker-compose.yml index 7f68e93..f3dae4c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,7 @@ services: ADMIN_PASSWORD: ${ADMIN_PASSWORD:-change-me-strong-password} ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@example.com} + # hostname of the compose service below POSTGRES_HOST: ${POSTGRES_HOST:-postgres} POSTGRES_USER: ${POSTGRES_USER:-vpn} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-vpn} @@ -44,6 +45,7 @@ services: - wg_data:/data/wireguard - awg_data:/data/amneziawg networks: + - vpn_internal - dokploy-network healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"] @@ -62,7 +64,10 @@ services: volumes: - postgres_data:/var/lib/postgresql/data networks: - - dokploy-network + vpn_internal: + aliases: + - postgres + - db healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s @@ -71,6 +76,10 @@ services: start_period: 10s networks: + # Compose DNS (panel -> postgres) works on this project network + vpn_internal: + driver: bridge + # Traefik / Dokploy public routing dokploy-network: external: true