Skip to content

Commit cd678d0

Browse files
Andre da Silvama2bd
Andre da Silva
authored andcommitted
Depend on other services based on health checks for docker compose (#2715)
## Motivation When using Docker Compose, we're not currently properly waiting for the service dependencies. ## Proposal Add a health check, and remove the `init_done` file ## Test Plan CI: we can see from the Docker CI logs that both the `proxy` and `shard`s services only get created after `shard-init` exits: ``` Network docker_default Creating Network docker_default Created Volume "docker_grafana-storage" Creating Volume "docker_grafana-storage" Created Volume "docker_linera-scylla-data" Creating Volume "docker_linera-scylla-data" Created Container scylla Creating Container prometheus Creating Container grafana Creating Container prometheus Created Container scylla Created Container grafana Created Container shard-init Creating Container shard-init Created Container proxy Creating Container docker-shard-4 Creating Container docker-shard-2 Creating Container docker-shard-1 Creating Container docker-shard-3 Creating Container docker-shard-1 Created <---- Creations Container proxy Created <---- Container docker-shard-4 Created <---- Container docker-shard-3 Created <---- Container docker-shard-2 Created <---- Container grafana Starting Container prometheus Starting Container scylla Starting Container scylla Started Container grafana Started Container shard-init Starting Container prometheus Started Container shard-init Started Container shard-init Waiting Container shard-init Waiting Container shard-init Exited <---- Exits Container proxy Starting <---- Starts Container shard-init Exited Container docker-shard-4 Starting <---- Container proxy Started Container docker-shard-4 Started Container docker-shard-1 Starting <---- Container docker-shard-1 Started Container docker-shard-3 Starting <---- Container docker-shard-3 Started Container docker-shard-2 Starting <---- Container docker-shard-2 Started Container prometheus Waiting Container grafana Waiting Container scylla Waiting Container proxy Waiting Container docker-shard-4 Waiting Container docker-shard-1 Waiting Container docker-shard-3 Waiting Container docker-shard-2 Waiting Container shard-init Waiting Container docker-shard-4 Healthy Container docker-shard-1 Healthy Container docker-shard-3 Healthy Container docker-shard-2 Healthy Container proxy Healthy Container shard-init Exited Container scylla Healthy Container grafana Healthy Container prometheus Healthy ``` ## Release Plan - Nothing to do / These changes follow the usual release cycle.
1 parent 2bbe451 commit cd678d0

4 files changed

+5
-16
lines changed

docker/compose-proxy-entrypoint.sh

-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#!/bin/sh
22

3-
while [ ! -f /shared/init_done ]; do
4-
echo "waiting for db init"
5-
sleep 5
6-
done
7-
83
exec ./linera-proxy \
94
--storage scylladb:tcp:scylla:9042 \
105
--genesis /config/genesis.json \

docker/compose-server-entrypoint.sh

-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#!/bin/sh
22

3-
while [ ! -f /shared/init_done ]; do
4-
echo "waiting for db init"
5-
sleep 5
6-
done
7-
83
exec ./linera-server run \
94
--storage scylladb:tcp:scylla:9042 \
105
--server /config/server.json \

docker/compose-server-init.sh

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ while true; do
1313
--storage scylladb:tcp:scylla:9042 \
1414
--genesis /config/genesis.json; then
1515
echo "Initialization successful."
16-
touch /shared/init_done
1716
exit 0
1817
else
1918
echo "Initialization failed, retrying in 5 seconds..."

docker/docker-compose.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,25 @@ services:
2020
command: [ "./compose-proxy-entrypoint.sh" ]
2121
volumes:
2222
- .:/config
23-
- linera-shared:/shared
23+
depends_on:
24+
shard-init:
25+
condition: service_completed_successfully
2426
shard:
2527
image: linera
2628
deploy:
2729
replicas: 4
2830
command: [ "./compose-server-entrypoint.sh" ]
2931
volumes:
3032
- .:/config
31-
- linera-shared:/shared
3233
depends_on:
33-
- shard-init
34+
shard-init:
35+
condition: service_completed_successfully
3436
shard-init:
3537
image: linera
3638
container_name: shard-init
3739
command: [ "./compose-server-init.sh" ]
3840
volumes:
3941
- .:/config
40-
- linera-shared:/shared
4142
depends_on:
4243
- scylla
4344

@@ -64,5 +65,4 @@ services:
6465
volumes:
6566
linera-scylla-data:
6667
driver: local
67-
linera-shared: # used for cross-container comms.
6868
grafana-storage:

0 commit comments

Comments
 (0)