services: bot: build: context: . args: VERSION: ${LINK_BOT_VERSION:-dev} COMMIT: ${LINK_BOT_COMMIT:-none} image: link-bot:local container_name: link-bot restart: unless-stopped env_file: - .env environment: DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable depends_on: db: condition: service_healthy volumes: - ./translations:/translations - ./assets:/assets:ro - ./secrets:/app/secrets:ro - link-bot-upload-data:/uploads - ./.update-agent:/run/link-bot-updater:ro migrate-bedolaga: build: . image: link-bot:local profiles: [ "tools" ] env_file: - .env environment: DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable BEDOLAGA_DATABASE_URL: ${BEDOLAGA_DATABASE_URL:-} depends_on: db: condition: service_healthy entrypoint: [ "/app/migrate-bedolaga" ] db: image: postgres:17 container_name: link-bot-db hostname: link-bot-db restart: unless-stopped env_file: - .env environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} - TZ=UTC volumes: - link-bot-db-data:/var/lib/postgresql/data healthcheck: test: [ 'CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' ] interval: 3s timeout: 10s retries: 3 caddy: image: caddy:2.10-alpine profiles: [ "standalone" ] container_name: link-bot-caddy restart: unless-stopped depends_on: - bot ports: - "80:80" - "443:443" environment: PUBLIC_HOST: ${PUBLIC_HOST} CABINET_SUBDOMAIN: ${CABINET_SUBDOMAIN:-} ADMIN_SUBDOMAIN: ${ADMIN_SUBDOMAIN:-} entrypoint: [ "/bin/sh", "/etc/caddy/start-link-bot.sh" ] volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - ./caddy-start.sh:/etc/caddy/start-link-bot.sh:ro - caddy-data:/data - caddy-config:/config volumes: link-bot-db-data: driver: local external: false name: link-bot-db-data link-bot-upload-data: caddy-data: caddy-config: