diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index d385894..3558b5f 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -2,24 +2,48 @@ # Caddy (network_mode: host) ходит в 127.0.0.1:8091, наружу порт закрыт (см. deploy/Caddyfile.snippet). # Один env на всё: core/.env — его читают и контейнеры (env_file), и сам compose (--env-file) для postgres. # Запуск: docker compose --env-file core/.env -f docker-compose.prod.yml up -d --build +# +# Tailscale — сайдкар: в тейлнете только этот стек (app/scheduler/worker сидят в его netns), +# хост и остальные сервисы не затронуты. --shields-up: нода ничего не принимает из тейлнета, +# только ходит наружу (в Home Assistant); входящее в hado идёт исключительно через Caddy. +# Первый запуск без ключа: ссылка на логин — в `docker compose logs tailscale`. services: + tailscale: + image: tailscale/tailscale:stable + hostname: hado + restart: unless-stopped + environment: + TS_STATE_DIR: /var/lib/tailscale + TS_USERSPACE: "false" + TS_EXTRA_ARGS: --shields-up + volumes: + - ts_state:/var/lib/tailscale + devices: + - /dev/net/tun + cap_add: + - net_admin + ports: + - "127.0.0.1:8091:8080" # порт app: netns общий, публикует его владелец netns + app: build: ./core image: hado-app restart: unless-stopped - ports: - - "127.0.0.1:8091:8080" + network_mode: service:tailscale env_file: ./core/.env environment: # serversideup: миграции и кеши при старте — только здесь, чтобы не гонять их из трёх контейнеров AUTORUN_ENABLED: "true" depends_on: + tailscale: + condition: service_started postgres: condition: service_healthy scheduler: image: hado-app restart: unless-stopped + network_mode: service:tailscale command: ["php", "/var/www/html/artisan", "schedule:work"] healthcheck: { disable: true } # healthcheck образа стучится в nginx, которого тут нет env_file: ./core/.env @@ -30,6 +54,7 @@ services: worker: image: hado-app restart: unless-stopped + network_mode: service:tailscale command: ["php", "/var/www/html/artisan", "queue:work", "--tries=3", "--sleep=1"] healthcheck: { disable: true } env_file: ./core/.env @@ -54,3 +79,4 @@ services: volumes: pg_data: + ts_state: