From 06c83dc6473af4031dac10b613a18accb5af14c9 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 16 Dec 2021 17:23:05 +0100 Subject: [PATCH] [WIFI-6170] Add OpenWifi Docker Compose deployment with PostgreSQL (#9) * Add wait-for-postgres.sh wrapper script Signed-off-by: Johann Hoffmann * Copy wait-for-postgres.sh into Docker image Signed-off-by: Johann Hoffmann --- Dockerfile | 3 ++- wait-for-postgres.sh | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100755 wait-for-postgres.sh diff --git a/Dockerfile b/Dockerfile index 4de969e..0785c69 100644 --- a/Dockerfile +++ b/Dockerfile @@ -65,7 +65,7 @@ RUN addgroup -S "$OWPROV_USER" && \ RUN mkdir /openwifi RUN mkdir -p "$OWPROV_ROOT" "$OWPROV_CONFIG" && \ chown "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG" -RUN apk add --update --no-cache librdkafka curl-dev mariadb-connector-c libpq su-exec gettext ca-certificates bash jq curl +RUN apk add --update --no-cache librdkafka curl-dev mariadb-connector-c libpq su-exec gettext ca-certificates bash jq curl postgresql-client COPY --from=builder /owprov/cmake-build/owprov /openwifi/owprov COPY --from=builder /cppkafka/cmake-build/src/lib/* /lib/ @@ -75,6 +75,7 @@ COPY --from=builder /aws-sdk-cpp/cmake-build/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.so COPY owprov.properties.tmpl / COPY docker-entrypoint.sh / +COPY wait-for-postgres.sh / RUN wget https://raw.githubusercontent.com/Telecominfraproject/wlan-cloud-ucentral-deploy/main/docker-compose/certs/restapi-ca.pem \ -O /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem diff --git a/wait-for-postgres.sh b/wait-for-postgres.sh new file mode 100755 index 0000000..b7fb1c4 --- /dev/null +++ b/wait-for-postgres.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# wait-for-postgres.sh + +set -e + +host="$1" +shift + +export PGUSER=$(grep 'storage.type.postgresql.username' $OWPROV_CONFIG/owprov.properties | awk -F '= ' '{print $2}') +export PGPASSWORD=$(grep 'storage.type.postgresql.password' $OWPROV_CONFIG/owprov.properties | awk -F '= ' '{print $2}') + +until psql -h "$host" -c '\q'; do + >&2 echo "Postgres is unavailable - sleeping" + sleep 1 +done + +>&2 echo "Postgres is up - executing command" + +if [ "$1" = '/openwifi/owprov' -a "$(id -u)" = '0' ]; then + if [ "$RUN_CHOWN" = 'true' ]; then + chown -R "$OWPROV_USER": "$OWPROV_ROOT" "$OWPROV_CONFIG" + fi + exec su-exec "$OWPROV_USER" "$@" +fi + +exec "$@"