110 lines
3.2 KiB
YAML
110 lines
3.2 KiB
YAML
version: '{{ compose_version }}'
|
|
|
|
services:
|
|
api:
|
|
image: cojedzie/api:latest
|
|
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
|
|
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
|
|
|
|
update-job:
|
|
image: cojedzie/api:latest
|
|
command: ["console", "app:update", "--async"]
|
|
networks:
|
|
- default
|
|
volumes:
|
|
- db_data:/var/db
|
|
env_file:
|
|
- ./environment
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 0
|
|
labels:
|
|
- "swarm.cronjob.enable=true"
|
|
- "swarm.cronjob.schedule={{ cojedzie_update_cron }}"
|
|
restart_policy:
|
|
condition: none
|
|
|
|
cron:
|
|
image: cojedzie/cron:latest
|
|
env_file:
|
|
- ./environment
|
|
volumes:
|
|
- db_data:/var/db
|
|
depends_on:
|
|
- api
|
|
|
|
worker:
|
|
image: cojedzie/worker:latest
|
|
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:latest
|
|
networks:
|
|
- "{{ ingress_network }}"
|
|
- default
|
|
depends_on:
|
|
- api
|
|
environment:
|
|
- APP_GTM={{ cojedzie_gtm }}
|
|
deploy:
|
|
mode: replicated
|
|
replicas: 1
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.middlewares.{{ service }}-compress.compress=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={{ service }}-compress@docker
|
|
- 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: ~
|