name: bonsai-api-stack services: db: image: postgres:16-alpine container_name: bonsai-api-db restart: unless-stopped environment: POSTGRES_DB: bonsai POSTGRES_USER: bonsai POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} TZ: Europe/Paris healthcheck: test: ["CMD-SHELL", "pg_isready -U bonsai -d bonsai"] interval: 10s timeout: 5s retries: 5 volumes: - ./db_data:/var/lib/postgresql/data networks: - bonsai-api-net api: image: git.goutailler-olivier.com/bonsai/bonsai-api:latest container_name: bonsai-api restart: unless-stopped depends_on: db: condition: service_healthy environment: DATASOURCE_URL: jdbc:postgresql://db:5432/bonsai DATASOURCE_USERNAME: bonsai DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD} KEYCLOAK_JWKS_URI: https://auth.goutailler-olivier.com/realms/bonsai/protocol/openid-connect/certs CORS_ALLOWED_ORIGIN_PROD: https://bonsai.goutailler-olivier.com TZ: Europe/Paris networks: - bonsai-api-net - proxy labels: - traefik.enable=true - traefik.http.routers.bonsai-api.rule=Host(`bonsai.goutailler-olivier.com`) && PathPrefix(`/api`) - traefik.http.routers.bonsai-api.entrypoints=websecure - traefik.http.routers.bonsai-api.tls.certresolver=le - traefik.http.services.bonsai-api.loadbalancer.server.port=8080 - traefik.docker.network=proxy - com.centurylinklabs.watchtower.enable=true networks: bonsai-api-net: driver: bridge proxy: external: true name: proxy