version: '{{ compose_version }}' services: api: image: cojedzie/api:{{ cojedzie_version }} networks: - "{{ ingress_network }}" - default volumes: - db_data:/var/db environment: - TRUSTED_PROXIES=10.0.0.0/8 env_file: - ./environment deploy: mode: replicated replicas: 1 update_config: parallelism: 1 order: start-first labels: - traefik.enable=true - traefik.http.routers.{{ service }}-api.rule=(Host(`{{ service }}.{{ main_domain }}`) || Host(`{{ cojedzie_domain }}`)) && (PathPrefix(`/api/`) || PathPrefix(`/bundles/`)) - traefik.http.routers.{{ service }}-api.priority=100 - traefik.http.routers.{{ service }}-api.tls=true - traefik.http.routers.{{ service }}-api.tls.certresolver=lets-encrypt - traefik.http.services.{{ service }}-api.loadbalancer.server.port=8080 cron: image: cojedzie/cron:{{ cojedzie_version }} env_file: - ./environment volumes: - db_data:/var/db depends_on: - api worker: image: cojedzie/worker:{{ cojedzie_version }} env_file: - ./environment volumes: - db_data:/var/db depends_on: - api mercure: image: dunglas/mercure networks: - "{{ ingress_network }}" - default environment: SERVER_NAME: ':80' USE_FORWARDED_HEADERS: 1 MERCURE_PUBLISHER_JWT_KEY: '{{ cojedzie_mercure_jwt_key }}' MERCURE_SUBSCRIBER_JWT_KEY: '{{ cojedzie_mercure_jwt_key }}' volumes: - mercure_data:/data - mercure_config:/config deploy: mode: replicated replicas: 1 labels: - traefik.enable=true - traefik.http.routers.{{ service }}-mercure.rule=(Host(`{{ service }}.{{ main_domain }}`) || Host(`{{ cojedzie_domain }}`)) && PathPrefix(`/.well-known/mercure`) - traefik.http.routers.{{ service }}-mercure.tls=true - traefik.http.routers.{{ service }}-mercure.tls.certresolver=lets-encrypt - traefik.http.services.{{ service }}-mercure.loadbalancer.server.port=80 front: image: cojedzie/front:{{ cojedzie_version }} networks: - "{{ ingress_network }}" - default depends_on: - api environment: - APP_GTM={{ cojedzie_gtm }} - APP_MAPTILER_KEY={{ cojedzie_maptiler }} deploy: mode: replicated replicas: 1 update_config: parallelism: 1 order: start-first labels: - traefik.enable=true - traefik.http.routers.{{ service }}-front.rule=Host(`{{ service }}.{{ main_domain }}`) || Host(`{{ cojedzie_domain }}`) - traefik.http.routers.{{ service }}-front.tls=true - traefik.http.routers.{{ service }}-front.middlewares=gzip@file - traefik.http.routers.{{ service }}-front.tls.certresolver=lets-encrypt - traefik.http.services.{{ service }}-front.loadbalancer.server.port=3000 volumes: db_data: ~ mercure_data: ~ mercure_config: ~