forked from MIR/bigbluebutton
109 lines
3.7 KiB
Bash
109 lines
3.7 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
# set POSTGRES_PASSWORD from Docker secret
|
|
if test -f "/run/secrets/postgres_password"; then
|
|
pwd=$(cat /run/secrets/postgres_password)
|
|
if [ -z "$pwd" ]; then
|
|
echo >&2 "error: /run/secrets/postgres_password is empty"
|
|
exit 1
|
|
fi
|
|
echo "entrypoint.bbb-graphql-server.sh setting POSTGRES_PASSWORD"
|
|
export POSTGRES_PASSWORD="${pwd}"
|
|
unset pwd
|
|
else
|
|
echo >&2 "error: /run/secrets/postgres_password does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# set HASURA_GRAPHQL_ADMIN_SECRET from Docker secret
|
|
if test -f "/run/secrets/hasura_admin_secret"; then
|
|
pwd=$(cat /run/secrets/hasura_admin_secret)
|
|
if [ -z "$pwd" ]; then
|
|
echo >&2 "error: /run/secrets/hasura_admin_secret is empty"
|
|
exit 1
|
|
fi
|
|
echo "entrypoint.bbb-graphql-server.sh setting HASURA_GRAPHQL_ADMIN_SECRET"
|
|
export HASURA_GRAPHQL_ADMIN_SECRET="${pwd}"
|
|
unset pwd
|
|
else
|
|
echo >&2 "error: /run/secrets/hasura_admin_secret does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# for psql
|
|
export PGHOST=postgres
|
|
export PGUSER="${POSTGRES_USER}"
|
|
export PGPASSWORD="${POSTGRES_PASSWORD}"
|
|
|
|
|
|
# for hasura
|
|
export HASURA_GRAPHQL_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/hasura_app
|
|
export HASURA_GRAPHQL_METADATA_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/hasura_app
|
|
export HASURA_GRAPHQL_LOG_LEVEL=warn
|
|
export HASURA_GRAPHQL_ENABLE_CONSOLE=false
|
|
export HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_REFETCH_INTERVAL=333
|
|
export HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_BATCH_SIZE=1000
|
|
export HASURA_GRAPHQL_STREAMING_QUERIES_MULTIPLEXED_REFETCH_INTERVAL=150
|
|
export HASURA_GRAPHQL_STREAMING_QUERIES_MULTIPLEXED_BATCH_SIZE=1000
|
|
export HASURA_GRAPHQL_SERVER_PORT=8085
|
|
export HASURA_GRAPHQL_ENABLE_TELEMETRY=false
|
|
export HASURA_GRAPHQL_WEBSOCKET_KEEPALIVE=10
|
|
export HASURA_GRAPHQL_AUTH_HOOK=http://apps-akka:8901/userInfo
|
|
export HASURA_BBB_GRAPHQL_ACTIONS_ADAPTER_URL=http://bbb-graphql-actions:8093
|
|
|
|
|
|
export HASURA_GRAPHQL_BBB_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/bbb_graphql
|
|
|
|
# echo "Waiting for Postgres..."
|
|
# TIMEOUT=30
|
|
# i=0
|
|
# until (echo > /dev/tcp/$PGHOST/5432) 2>/dev/null; do
|
|
# i=$((i+1))
|
|
# if [ $i -ge $TIMEOUT ]; then
|
|
# echo "Postgres did not start within $TIMEOUT seconds."
|
|
# exit 1
|
|
# fi
|
|
# sleep 1
|
|
# done
|
|
# echo "Postgres is ready!"
|
|
|
|
cd /app/
|
|
|
|
# patch database url
|
|
# TODO: this should be possible upstream in BBB via an environment variable
|
|
yq e -i ".[1].configuration.connection_info.database_url = \"$HASURA_GRAPHQL_BBB_DATABASE_URL\"" metadata/databases/databases.yaml
|
|
|
|
sed -i "s/^admin_secret: .*/admin_secret: $HASURA_GRAPHQL_ADMIN_SECRET/g" /app/config.yaml
|
|
|
|
echo "SELECT 'CREATE DATABASE hasura_app' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'hasura_app')\gexec" | psql
|
|
|
|
echo "Restarting database bbb_graphql"
|
|
psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname = 'bbb_graphql'" > /dev/null
|
|
psql -c "drop database if exists bbb_graphql with (force)"
|
|
psql -c "create database bbb_graphql WITH TEMPLATE template0 LC_COLLATE 'C.UTF-8'"
|
|
psql -c "alter database bbb_graphql set timezone to 'UTC'"
|
|
|
|
echo "Creating tables in bbb_graphql"
|
|
psql -U postgres -d bbb_graphql -q -f bbb_schema.sql --set ON_ERROR_STOP=on
|
|
|
|
echo "Starting hasura-graphql-engine"
|
|
gosu nobody graphql-engine serve --log-level debug &
|
|
PID=$!
|
|
|
|
sleep 1
|
|
|
|
|
|
#Check if Hasura is ready before applying metadata
|
|
while ! netstat -tuln | grep ":$HASURA_GRAPHQL_SERVER_PORT " > /dev/null; do
|
|
echo "Waiting for Hasura's port ($HASURA_GRAPHQL_SERVER_PORT) to be ready..."
|
|
sleep 1
|
|
done
|
|
|
|
echo "Applying new metadata to Hasura"
|
|
/usr/local/bin/hasura metadata apply --skip-update-check
|
|
|
|
wait "$PID"
|
|
|
|
#graphql-engine serve --log-level debug |