-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathcompose.yaml
More file actions
155 lines (147 loc) · 5.63 KB
/
compose.yaml
File metadata and controls
155 lines (147 loc) · 5.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
x-app-environment: &app_environment
# Variables that other infrastructure (Caddy mercure module, FrankenPHP,
# rabbitmq) needs are set here. App-level values (APP_SECRET,
# MAIL_FROM_ADDRESS, GEWISDB_API_KEY, SSH_*) are intentionally NOT set so
# they can be supplied by .env.local in dev (read by Symfony Runtime) and
# by the orchestrator in prod (see compose.production.yaml).
APP_ENV: "${APP_ENV:-prod}"
SERVER_NAME: "${SERVER_NAME:-localhost:80}, web:80"
DEFAULT_URI: "${DEFAULT_URI:-http://localhost}"
DATABASE_DSN: "pdo-mysql://${DOCKER_DB_USERNAME:-gewis}:${DOCKER_DB_PASSWORD:-gewis}@${DOCKER_DB_HOST:-mariadb}:${DOCKER_DB_PORT:-3306}/${DOCKER_DB_DATABASE:-gewis}?serverVersion=${DOCKER_DB_VERSION:-11.8.3-mariadb}&charset=${DOCKER_DB_CHARSET:-utf8mb4}&collation=${DOCKER_DB_COLLATION:-utf8mb4_uca1400_ai_ci}"
GEWISDB_DATABASE_DSN: "pgsql://${GEWISDB_DB_USERNAME:-gewisdb}:${GEWISDB_DB_PASSWORD:-gewisdb}@${GEWISDB_DB_HOST:-postgres}:${GEWISDB_DB_PORT:-5432}/${GEWISDB_DB_DATABASE:-gewisdb}?sslmode=require&charset=utf8"
GEWISDB_API_HOST: "${GEWISDB_API_HOST:-https://database.test.gewis.nl/api}"
MESSENGER_TRANSPORT_DSN: "amqp://${RABBITMQ_DEFAULT_USER:-guest}:${RABBITMQ_DEFAULT_PASS:-guest}@${RABBITMQ_HOST:-rabbitmq}:${RABBITMQ_PORT:-5672}"
VALKEY_DSN: "valkey://${VALKEY_HOST:-valkey}:${VALKEY_PORT:-6379}"
MATOMO_DOMAIN: "${MATOMO_DOMAIN:-http://localhost:82}"
MERCURE_URL: "${MERCURE_URL:-http://web/.well-known/mercure}"
MERCURE_PUBLIC_URL: "${MERCURE_PUBLIC_URL:-https://localhost/.well-known/mercure}"
MERCURE_JWT_SECRET: "${MERCURE_JWT_SECRET:-!ChangeThisMercureHubJWTSecretKey!}"
MERCURE_PUBLISHER_JWT_KEY: "${MERCURE_JWT_SECRET:-!ChangeThisMercureHubJWTSecretKey!}"
MERCURE_SUBSCRIBER_JWT_KEY: "${MERCURE_JWT_SECRET:-!ChangeThisMercureHubJWTSecretKey!}"
x-app: &app
restart: unless-stopped
networks:
- gewisweb_network
depends_on:
mailer:
condition: service_started
valkey:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
<<: *app_environment
x-worker-volumes: &worker_volumes
- data:/app/data
x-worker: &worker
<<: *app
entrypoint: []
volumes: *worker_volumes
# Workers skip the entrypoint (and thus migrations); wait for web, which runs them. Restated in full because the
# `<<` merge replaces depends_on completely.
depends_on:
mailer:
condition: service_started
valkey:
condition: service_healthy
rabbitmq:
condition: service_healthy
web:
condition: service_healthy
deploy:
replicas: 1
update_config:
parallelism: 1
delay: 15s
order: start-first
healthcheck:
disable: true
services:
web:
<<: *app
volumes:
- caddy_data:/data
- caddy_config:/config
- data:/app/data
ports:
- target: 80
published: 9200
protocol: tcp
messenger-high-priority:
<<: *worker
command: [ "php", "bin/console", "messenger:consume", "high_priority", "-vv", "--time-limit=600", "--limit=32", "--memory-limit=256M" ]
messenger-normal-priority:
<<: *worker
command: [ "php", "bin/console", "messenger:consume", "normal_priority", "-vv", "--time-limit=600", "--limit=32", "--memory-limit=256M" ]
messenger-bulk:
<<: *worker
command: [ "php", "bin/console", "messenger:consume", "bulk", "-vv", "--time-limit=600", "--limit=32", "--memory-limit=256M" ]
scheduler-default:
<<: *worker
command: [ "php", "bin/console", "messenger:consume", "scheduler_default", "-vv", "--time-limit=600", "--limit=32", "--memory-limit=256M" ]
scheduler-gdpr:
<<: *worker
command: [ "php", "bin/console", "messenger:consume", "scheduler_gdpr", "-vv", "--time-limit=600", "--limit=32", "--memory-limit=256M" ]
mailer:
image: axllent/mailpit
restart: unless-stopped
hostname: mailpit
ports:
- target: 1025
protocol: tcp
networks:
- gewisweb_network
valkey:
image: valkey/valkey:9.0-alpine
restart: unless-stopped
hostname: valkey
volumes:
- valkey_data:/data
networks:
- gewisweb_network
ports:
- target: 6379
protocol: tcp
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
start_period: 10s
timeout: 10s
interval: 5s
retries: 5
rabbitmq:
image: rabbitmq:4.2-alpine
restart: unless-stopped
hostname: rabbitmq
environment:
RABBITMQ_NODENAME: rabbit@rabbitmq
volumes:
- rabbitmq_data:/var/lib/rabbitmq
networks:
- gewisweb_network
ports:
- target: 5672
protocol: tcp
healthcheck:
test: ["CMD-SHELL", "rabbitmq-diagnostics -q check_running && rabbitmq-diagnostics -q check_local_alarms"]
start_period: 10s
interval: 10s
timeout: 5s
retries: 5
###> symfony/mercure-bundle ###
###< symfony/mercure-bundle ###
###> doctrine/doctrine-bundle ###
###< doctrine/doctrine-bundle ###
###> symfony/mailer ###
###< symfony/mailer ###
volumes:
caddy_data:
caddy_config:
data:
rabbitmq_data:
valkey_data:
###> symfony/mercure-bundle ###
###< symfony/mercure-bundle ###
###> doctrine/doctrine-bundle ###
###< doctrine/doctrine-bundle ###
networks:
gewisweb_network: