#!/usr/bin/env sh # usage: file_env VAR [DEFAULT] # ie: file_env 'XYZ_DB_PASSWORD' 'example' # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) # https://git.chihiro.org.cn/GitHub/nextcloud-docker/commit/530edd68aa6bc3bc493dd7c96f673239edeef130 file_env() { var="$1" fileVar="${var}_FILE" def="${2:-}" varValue=$(env | grep -E "^${var}=" | sed -E -e "s/^${var}=//") fileVarValue=$(env | grep -E "^${fileVar}=" | sed -E -e "s/^${fileVar}=//") if [ -n "${varValue}" ] && [ -n "${fileVarValue}" ]; then echo >&2 "error: both $var and $fileVar are set (but are exclusive)" exit 1 fi if [ -n "${varValue}" ]; then export "$var"="${varValue}" elif [ -n "${fileVarValue}" ]; then export "$var"="$(cat "${fileVarValue}")" elif [ -n "${def}" ]; then export "$var"="$def" fi unset "$fileVar" } load_vars() { file_env "POSTGRES_PASSWORD" file_env "EMAIL_SERVER_PASSWORD" file_env "NEXTAUTH_SECRET" file_env "CALENDSO_ENCRYPTION_KEY" file_env "GOOGLE_API_CREDENTIALS" file_env "MS_GRAPH_CLIENT_SECRET" file_env "ZOOM_CLIENT_SECRET" file_env "OIDCDB_PASSWORD" export "DATABASE_URL=postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" export "SAML_DATABASE_URL=postgresql://$OIDCDB_USER:$OIDCDB_PASSWORD@$OIDCDB_HOST:5432/$OIDC_DB" } main() { set -eu load_vars } main # 3wc: upstream CMD # https://github.com/calendso/docker/blob/main/Dockerfile /calcom/scripts/start.sh