This repository was archived by the owner on Jun 26, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
155 lines (149 loc) · 4.7 KB
/
docker-compose.yaml
File metadata and controls
155 lines (149 loc) · 4.7 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
services:
# PostgreSQL Database
db:
# Using 16 Alpine version for light-weight purposes.
image: postgres:16-alpine
container_name: ${POSTGRES_HOSTNAME}
hostname: ${POSTGRES_HOSTNAME}
volumes:
- postgres_data:/var/lib/postgresql/data2
restart: always
# setting shared memory for docker compose
shm_size: 128mb
ports:
- 5432:5432
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
networks:
- igrp_network
env_file: ".env"
# Keycloak server
keycloak:
image: keycloak/keycloak:25.0.4
container_name: keycloak
hostname: ${KEYCLOAK_HOSTNAME}
command:
- start
- --import-realm
# - show-config
- --features=admin-fine-grained-authz
environment:
KC_HOSTNAME: http://${KEYCLOAK_HOSTNAME}:${KEYCLOAK_HOSTNAME_PORT}
KC_HOSTNAME_PORT: ${KEYCLOAK_HOSTNAME_PORT}
KC_HOSTNAME_STRICT_BACKCHANNEL: false
KC_HTTP_ENABLED: true
KC_HOSTNAME_STRICT_HTTPS: false
KC_HEALTH_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KC_HOSTNAME_BACKCHANNEL_DYNAMIC: true
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://db:5432/${POSTGRES_DB}
KC_DB_USERNAME: ${POSTGRES_USER}
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
KEYCLOAK_IMPORT: ./igrp-user-management-api/igrp-user-management-api/imports/${KEYCLOAK_REALM}-realm.json
volumes:
- ./data/:/opt/keycloak/data/import
ports:
- ${KEYCLOAK_HOSTNAME_PORT}:${KEYCLOAK_HOSTNAME_PORT}
restart: always
extra_hosts:
- "${KEYCLOAK_HOSTNAME}:host-gateway"
depends_on:
- db
env_file: ".env"
networks:
- igrp_network
healthcheck:
test: [
"CMD-SHELL",
'exec 3<>/dev/tcp/localhost/8080; echo -e "GET /health/ready HTTP/1.1\nhost: localhost:8080\n" >&3; timeout --preserve-status 1 cat <&3 | grep -m 1 status | grep -m 1 UP; ERROR=$?; exec 3<&-; exec 3>&-; exit $ERROR'
]
interval: 10s
timeout: 5s
retries: 5
# Minio server
minio:
image: minio/minio:latest
container_name: minio
restart: no
env_file: ".env"
environment:
MINIO_ROOT_USER: ${MINIO_ACCESS_KEY}
MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY}
volumes:
- ./data:/minio_data
ports:
- "9000:9000"
- "9001:9001"
networks:
- igrp_network
command: server /data --console-address :9001
entrypoint: >
/bin/sh -c '
isAlive() { curl -sf http://127.0.0.1:9000/minio/health/live; } # check if Minio is alive
minio $0 "$@" --quiet & echo $! > /tmp/minio.pid # start Minio in the background
while ! isAlive; do sleep 0.1; done # wait until Minio is alive
mc alias set minio http://127.0.0.1:9000 ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY} # setup Minio client
mc mb minio/${MINIO_BUCKET_NAME}|| true # create a test bucket
mc anonymous set public minio/${MINIO_BUCKET_NAME} # make the test bucket public
kill -s INT $(cat /tmp/minio.pid) && rm /tmp/minio.pid # stop Minio
while isAlive; do sleep 0.1; done # wait until Minio is stopped
exec minio $0 "$@" # start Minio in the foreground
'
# User management API
user-management-api:
# build: ./igrp-user-management-api/
image: registry.nosi.cv/formacao-igrp/igrp-user-management-api:demo-local
depends_on:
keycloak:
condition: service_healthy
# - minio
# - db
container_name: user-management
env_file: ".um.env"
# environment:
ports:
- "8081:8081"
networks:
- igrp_network
# restart: on-failure
# App management API
app-manager-api:
# build: ./app-manager-api/
image: registry.nosi.cv/formacao-igrp/app-manager-api:demo-local
env_file: ".am.env"
container_name: app-manager
ports:
- "8082:8082"
networks:
- igrp_network
depends_on:
keycloak:
condition: service_healthy
# IGRP UI
app:
# build: ./igrp-ui/
image: registry.nosi.cv/formacao-igrp/igrp-ui-dev:demo-local
env_file: ".env"
container_name: igrp-ui
ports:
- "3000:3000"
networks:
- igrp_network
depends_on:
- app-manager-api
- user-management-api
stdin_open: true
# volumes:
# - ./:/app
# - /app/node_modules
# - /app/.next
networks:
igrp_network:
driver: bridge
volumes:
postgres_data:
driver: local