name: whatido services: db: image: postgres:16-alpine environment: POSTGRES_DB: whereldo POSTGRES_USER: app POSTGRES_PASSWORD: ${DB_PASSWORD} TZ: Europe/Moscow volumes: - pgdata:/var/lib/postgresql/data - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U app -d whereldo"] interval: 2s timeout: 3s retries: 10 app: build: . expose: - "3003" - "3443" ports: - "3003:3003" - "3443:3443" environment: DATABASE_URL: postgres://app:${DB_PASSWORD}@db:5432/whereldo ADMIN_PASSWORD: ${ADMIN_PASSWORD} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} NODE_ENV: production TZ: Europe/Moscow depends_on: db: condition: service_healthy volumes: - ./uploads:/app/uploads # Публикация через Tailscale (Serve / Funnel) без проброса портов. # Приложение доступно по https://whatido..ts.net tailscale: image: tailscale/tailscale:latest hostname: whatido restart: unless-stopped network_mode: host cap_add: - NET_ADMIN - SYS_MODULE environment: SSL_CERT_FILE: /etc/tailscale/app-certs/cert.pem volumes: - /var/lib/tailscale:/var/lib/tailscale - /dev/net/tun:/dev/net/tun - /lib/modules:/lib/modules:ro - ./certs:/etc/tailscale/app-certs:ro - ./start-tailscale.sh:/start-tailscale.sh:ro command: ["/bin/sh", "/start-tailscale.sh"] depends_on: - app text-corrector: image: ghcr.io/ggml-org/llama.cpp:server container_name: text-corrector restart: unless-stopped volumes: - ./models:/models ports: - "8080:8080" command: - -m - /models/qwen2.5-1.5b-instruct-q4_k_m.gguf - --host - 0.0.0.0 - --port - "8080" - -c - "4096" - -n - "256" - -t - "8" - --temp - "0.1" volumes: pgdata: