-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
113 lines (106 loc) · 3 KB
/
docker-compose.yaml
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
services:
nginx:
image: nginx:alpine
container_name: module-management-nginx
volumes:
- ./Client/nginx.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt:/etc/letsencrypt:ro
ports:
- "80:80"
- "443:443"
depends_on:
- frontend
- backend
- keycloak
networks:
- module-management-network
restart: unless-stopped
postgres:
image: "postgres:latest"
container_name: module-management-db
environment:
- "POSTGRES_DB={DB_NAME}"
- "POSTGRES_PASSWORD=${DB_PASSWORD}"
- "POSTGRES_USER=${DB_USER}"
ports:
- "${DB_PORT}:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- module-management-network
restart: unless-stopped
keycloak:
image: quay.io/keycloak/keycloak:26.0.6
container_name: module-management-keycloak
environment:
KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KC_PROXY: edge
KC_HOSTNAME: module-management.ase.cit.tum.de
KC_HOSTNAME_STRICT: "false"
KC_HOSTNAME_STRICT_HTTPS: "true"
KC_HTTP_RELATIVE_PATH: /auth
command:
- start-dev
- --import-realm
volumes:
- keycloak_data:/opt/keycloak/data
- ./module-management-realm.json:/opt/keycloak/data/import/realm.json
ports:
- "${AUTH_PORT}:8080"
networks:
- module-management-network
restart: unless-stopped
ai-service:
build:
context: ./AI
dockerfile: ai.Dockerfile
container_name: module-management-ai
volumes:
- overlap_data:/code/data
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
AI_MODEL: ${AI_MODEL}
ports:
- "${AI_SERVICE_PORT}:5000"
networks:
- module-management-network
restart: unless-stopped
backend:
build:
context: ./Server
dockerfile: ./server.Dockerfile
container_name: module-management-backend
depends_on:
- postgres
- keycloak
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/ModuleManagement
- SPRING_DATASOURCE_USERNAME=${DB_USER}
- SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD}
- SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK-SET-URI=http://keycloak:8080/auth/realms/module-management/protocol/openid-connect/certs
- SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER-URI=http://keycloak:8080/auth/realms/module-management
- AI_SERVICE_URL=http://ai-service:5000
networks:
- module-management-network
restart: unless-stopped
frontend:
build:
context: ./Client
dockerfile: ./client.Dockerfile
container_name: module-management-frontend
environment:
- KEYCLOAK_URL=https://module-management.ase.cit.tum.de/auth
depends_on:
- backend
- ai-service
networks:
- module-management-network
restart: unless-stopped
volumes:
postgres_data:
keycloak_data:
overlap_data:
networks:
module-management-network:
driver: bridge