Repository navigation
Expand file tree
/
Copy pathdocker-compose.dev.yaml
More file actions
156 lines (143 loc) · 3.79 KB
/
Copy pathdocker-compose.dev.yaml
File metadata and controls
156 lines (143 loc) · 3.79 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
156
services:
frontend-webpack:
image: node:24-alpine
working_dir: /frontend
volumes:
- ./frontend:/frontend
command: npm run dev:webpack
frontend-tailwind:
image: node:24-alpine
working_dir: /frontend
volumes:
- ./frontend:/frontend
- frontend-tailwind-node-modules:/frontend/node_modules
- ./internal/http/templates:/internal/http/templates:ro
command: sh -c "npm install --no-audit --no-fund && exec npm run dev:tailwind"
postgres:
image: postgres:16.2
ports:
- "5433:5432"
restart: always
environment:
POSTGRES_DB: ${POSTGRESQL_DATABASE}
POSTGRES_USER: ${POSTGRESQL_USERNAME}
POSTGRES_PASSWORD: ${POSTGRESQL_PASSWORD}
healthcheck:
test: "/usr/bin/pg_isready --dbname=${POSTGRESQL_DATABASE} --username=${POSTGRESQL_USERNAME} || exit 1"
interval: 10s
timeout: 5s
retries: 5
volumes:
- postgres-data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6380:6379"
restart: always
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- redis-data:/data
mailpit:
image: axllent/mailpit:v1.31.1
ports:
- "1025:1025"
- "8025:8025"
restart: unless-stopped
backend-migrations:
build:
context: ./migrations
env_file:
- .env
depends_on:
postgres:
condition: service_healthy
volumes:
- ./migrations:/migrations
command: ["up", "-env=default", "-config=./dbconfig.yaml"]
restart: "no"
gateway:
image: ghcr.io/authara-org/authara-gateway:v1.2.1
ports:
- "3001:3000"
environment:
GATEWAY_BIND: :3000
AUTHARA_UPSTREAM: authara:8080
APP_UPSTREAM: app-router:80
depends_on:
authara:
condition: service_healthy
app-router:
condition: service_started
cloudflared:
profiles: ["tunnel"]
image: cloudflare/cloudflared:latest
command: ["tunnel", "--no-autoupdate", "run"]
environment:
TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN:-}
depends_on:
gateway:
condition: service_started
restart: unless-stopped
app-router:
image: nginx:1.29-alpine
volumes:
- ./integrations/dev-router.nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- ssr-app
- spa-app
restart: unless-stopped
authara:
build:
context: .
dockerfile: docker/Dockerfile.dev
volumes:
- .:/app
env_file:
- .env
environment:
AUTHARA_EMAIL_SMTP_HOST: mailpit
AUTHARA_EMAIL_SMTP_PORT: 1025
AUTHARA_EMAIL_SMTP_TLS: "false"
healthcheck:
test: ["CMD", "wget", "--quiet", "--spider", "http://127.0.0.1:8080/auth/ready"]
interval: 10s
timeout: 3s
retries: 5
depends_on:
backend-migrations:
condition: service_completed_successfully
redis:
condition: service_healthy
mailpit:
condition: service_started
ssr-app:
build:
context: ./integrations/ssr-app/
environment:
AUTHARA_AUDIENCE: app
AUTHARA_BASE_URL: http://authara:8080
AUTHARA_ISSUER: ${AUTHARA_JWT_ISSUER}
AUTHARA_JWKS_URL: http://authara:8080/auth/.well-known/jwks.json
AUTHARA_WEBHOOK_SECRET: ${AUTHARA_WEBHOOK_SECRET}
AUTHARA_INTERNAL_API_TOKEN: ${AUTHARA_INTERNAL_API_TOKEN:-dev-internal-token}
volumes:
- ./integrations/ssr-app:/app
restart: unless-stopped
spa-app:
build:
context: ./integrations/spa-app/
target: dev
environment:
PUBLIC_URL: ${PUBLIC_URL:-http://localhost:3001}
volumes:
- ./integrations/spa-app:/app
- /app/node_modules
restart: unless-stopped
volumes:
postgres-data:
redis-data:
frontend-tailwind-node-modules: