citusdata / citusdata/citus

Manager service must wait for master

Open
#2,438 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
12.8k
Forks
794
Avg merge
2d 14h
Merged PRs (30d)
31

Description

When I use [docker-compose.yml](https://raw.githubusercontent.com/citusdata/docker/master/docker-compose.yml) template, manager service doesn't wait for master service causing services to exit. The workaround I used was adding `restart: always` to the yml. Using `depends_on` doesn't assure that the service is actually available.

It looks like this now:
``` yml
version: '3.5'
services:

master:
restart: always
container_name: klara-db-master
image: citusdata/citus:7.5.1
ports:
- 5432:5432
labels: ['com.citusdata.role=Master']
networks:
- klara-net
volumes:
- var/run/postgresql
- postgres:/var/lib/postgresql/data
env_file:
- klara-api.env

db-manager:
restart: always
container_name: klara-db-manager
image: citusdata/membership-manager:0.2.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- master
networks:
- klara-net

db-worker:
restart: always
container_name: klara-db-worker
image: citusdata/citus:7.5.1
labels: ['com.citusdata.role=Worker']
volumes:
- postgres:/var/lib/postgresql/data
depends_on:
- db-manager
networks:
- klara-net

db-cache:
container_name: klara-db-cache
image: redis:4.0.11
ports:
- 6379:6379
depends_on:
- db-worker
networks:
- klara-net
volumes:
- redis:/data

api:
container_name: klara-api
image: alaxalves/klara-api:1.2
networks:
- klara-net
ports:
- 3000:3000
env_file:
- klara-api.env
volumes:
- .:/klara-api

volumes:
redis:
postgres: {}

networks:
klara-net:
name: klara-net
```
start.sh file looks like this
``` shell
#!/bin/bash

bundle check || bundle install

while ! pg_isready -h $PG_HOST -p $PG_PORT -q -U $PG_USERNAME; do
>&2 echo "Postgres is unavailable - sleeping..."
sleep 1
done
>&2 echo "Postgres is up - executing commands..."

if bundle exec rails db:exists; then
>&2 echo "Database exists, only migrating it..."
bundle exec rails db:migrate
else
>&2 echo "Database doesn't exist, creating and migrating it..."
bundle exec rails db:create
bundle exec rails db:migrate
fi

>&2 echo 'Seeding database...'
bundle exec rails db:seed

if [ -f $pidfile ] ; then
>&2 echo 'Server PID file already exists. Removing it...'
rm $pidfile
fi

>&2 echo 'Running server...'
bundle exec rails s -p 3000 -b 0.0.0.0

```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.