-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompose.yaml
156 lines (145 loc) · 3.84 KB
/
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
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:
api:
extends: rust-release
container_name: cron-mon-api
ports:
- 8000:8000
command: ./cron-mon api
networks:
- default
- cron-mon-network
api-debug:
extends: rust-cargo
container_name: cron-mon-api-debug
ports:
- 8000:8000
command: cargo run --bin cron-mon -- api
networks:
- default
- cron-mon-network
monitor:
extends: rust-release
container_name: cron-mon-monitor
command: ./cron-mon monitor
networks:
- default
- cron-mon-network
monitor-debug:
extends: rust-cargo
container_name: cron-mon-monitor-debug
command: cargo run --bin cron-mon -- monitor
networks:
- default
- cron-mon-network
db:
container_name: cron-mon-db
image: public.ecr.aws/docker/library/postgres:16.1
environment:
POSTGRES_USER: cron-mon-api
POSTGRES_PASSWORD: itsasecret
POSTGRES_DB: cron-mon
ports:
- 54320:5432
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 5s
timeout: 5s
retries: 5
command: [ "postgres", "-c", "log_statement=all" ]
keycloak:
container_name: cron-mon-keycloak
image: quay.io/keycloak/keycloak:25.0.2
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_HEALTH_ENABLED: true
ports:
- 8080:8080
volumes:
- ./keycloak:/opt/keycloak/data/import
networks:
- default
- cron-mon-network
healthcheck:
test: [
"CMD-SHELL",
"exec 3<>/dev/tcp/127.0.0.1/8080;\
echo -e 'GET /health/ready HTTP/1.1\r\nhost: http://localhost\r\nConnection: close\r\n\r\n' >&3;\
if [ $? -eq 0 ]; then \
echo 'Healthcheck Successful';\
exit 0;\
else \
echo 'Healthcheck Failed'\
exit 1;\
fi;"
]
interval: 5s
timeout: 5s
retries: 30
command: ["start-dev", "--import-realm"]
seeder:
container_name: cron-mon-db-seeder
build:
dockerfile: ./api/src/infrastructure/seeding/Dockerfile
context: .
environment:
PGHOST: cron-mon-db
PGUSER: cron-mon-api
PGPASSWORD: itsasecret
PGDATABASE: cron-mon
env_file:
- .env
volumes:
- ./api/src/infrastructure/seeding/seeds.sql:/usr/share/seeds.sql
depends_on:
db:
condition: service_healthy
command: 'psql --set=slack_channel="$SLACK_CHANNEL" --set=slack_token="$SLACK_TOKEN" -f /usr/share/seeds.sql'
rust-release:
image: cron-mon/rust-release-image
build:
dockerfile: ./Dockerfile
context: .
stdin_open: true
tty: true
depends_on:
db:
condition: service_healthy
keycloak:
condition: service_healthy
environment:
DATABASE_URL: postgres://cron-mon-api:itsasecret@cron-mon-db/cron-mon
KEYCLOAK_CERTS_URL: http://cron-mon-keycloak:8080/realms/cron-mon-io/protocol/openid-connect/certs
CARGO_HOME: /usr/cron-mon/.cargo
volumes:
- ./api:/usr/cron-mon/api
rust-cargo:
image: cron-mon/rust-cargo-image
build:
dockerfile: ./Dockerfile
context: .
target: builder
stdin_open: true
tty: true
depends_on:
db:
condition: service_healthy
keycloak:
condition: service_healthy
environment:
DATABASE_URL: postgres://cron-mon-api:itsasecret@cron-mon-db/cron-mon
JSON_LOGGING: true
KEYCLOAK_CERTS_URL: http://cron-mon-keycloak:8080/realms/cron-mon-io/protocol/openid-connect/certs
CARGO_HOME: /usr/cron-mon/.cargo
volumes:
- ./api:/usr/cron-mon/api
- /var/run/docker.sock:/var/run/docker.sock
networks:
cron-mon-network:
driver: bridge
name: cron-mon-network
volumes:
postgres-data:
name: cron-mon-postgres-data