-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
113 lines (105 loc) · 2.86 KB
/
docker-compose.yml
File metadata and controls
113 lines (105 loc) · 2.86 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
version: '3.8'
services:
postgres_app:
image: postgres:17
container_name: postgres_app
environment:
POSTGRES_DB: "${APP_POSTGRES_DB}"
POSTGRES_USER: "${APP_POSTGRES_USER}"
POSTGRES_PASSWORD: "${APP_POSTGRES_PASSWORD}"
ports:
- "${APP_POSTGRES_PORT}:5432"
volumes:
- postgres_app_data:/var/lib/postgresql/data
networks:
- app_net
postgres_keycloak:
image: postgres:17
container_name: postgres_keycloak
environment:
POSTGRES_DB: "${KC_POSTGRES_DB}"
POSTGRES_USER: "${KC_POSTGRES_USER}"
POSTGRES_PASSWORD: "${KC_POSTGRES_PASSWORD}"
ports:
- "${KC_POSTGRES_PORT}:5432"
volumes:
- postgres_keycloak_data:/var/lib/postgresql/data
networks:
- app_net
minio:
image: minio/minio:latest
container_name: minio
command: server /data --console-address ":9001"
ports:
- "${MINIO_API_PORT}:9000"
- "${MINIO_PORT}:9001"
environment:
MINIO_ROOT_USER: "${MINIO_ACCESS_KEY}"
MINIO_ROOT_PASSWORD: "${MINIO_SECRET_KEY}"
volumes:
- minio_data:/data
networks:
- app_net
keycloak:
image: quay.io/keycloak/keycloak:26.3.2
container_name: keycloak
command: start-dev --import-realm
environment:
KC_DB: postgres
KC_DB_URL_HOST: postgres_keycloak
KC_DB_URL_DATABASE: "${KC_POSTGRES_DB}"
KC_DB_USERNAME: "${KC_POSTGRES_USER}"
KC_DB_PASSWORD: "${KC_POSTGRES_PASSWORD}"
KC_HOSTNAME: "${KC_HOSTNAME}"
KEYCLOAK_ADMIN: "${KC_ADMIN}"
KEYCLOAK_ADMIN_PASSWORD: "${KC_ADMIN_PASSWORD}"
ports:
- "${KC_PORT}:8080"
depends_on:
- postgres_keycloak
volumes:
- ./keycloak_setup:/opt/keycloak/data/import
networks:
- app_net
app:
build:
context: .
dockerfile: Dockerfile
container_name: zip_checker_app
ports:
- "${APP_PORT}:8000"
environment:
- APP_POSTGRES_URL=postgresql+asyncpg://${APP_POSTGRES_USER}:${APP_POSTGRES_PASSWORD}@postgres_app:5432/${APP_POSTGRES_DB}
- APP_POSTGRES_PORT=5432
- KC_POSTGRES_URL=postgresql+asyncpg://${KC_POSTGRES_USER}:${KC_POSTGRES_PASSWORD}@postgres_keycloak:5432/${KC_POSTGRES_DB}
- KC_POSTGRES_PORT=5432
- KC_HOSTNAME=keycloak
- KC_PORT=8080
- MINIO_URL=minio
- MINIO_PORT=9001
- MINIO_API_PORT=9000
- APP_HOST=0.0.0.0
- APP_PORT=8000
depends_on:
- postgres_app
- postgres_keycloak
- minio
- keycloak
command: >
sh -c "
echo 'Waiting for database...' &&
sleep 20 &&
echo 'Running migrations...' &&
alembic -c /app/alembic.ini upgrade head &&
echo 'Starting application...' &&
python src/main.py
"
networks:
- app_net
volumes:
postgres_keycloak_data:
postgres_app_data:
minio_data:
networks:
app_net:
driver: bridge