#!/usr/bin/with-contenv bash # Display variables for troubleshooting echo " " echo "-------------------------------------" echo " " echo -e "Variables set:\\n\ NODE_ENV=${NODE_ENV}\\n\ EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}\\n\ DB_CONNECTION=${DB_CONNECTION}\\n\ DB_HOST=${DB_HOST}\\n\ DB_PORT=${DB_PORT}\\n\ DB_USER=${DB_USER}\\n\ DB_PASSWORD=${DB_PASSWORD}\\n\ DB_DATABASE=${DB_DATABASE}\\n\ DB_SSL=${DB_SSL}\\n\ IS_CREATION_ENABLED=${IS_CREATION_ENABLED}\\n\ IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}\\n\ IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}\\n\ CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}\\n\ MAIL_CONNECTION=${MAIL_CONNECTION}\\n\ SMTP_PORT=${SMTP_PORT}\\n\ SMTP_HOST=${SMTP_HOST}\\n\ MAIL_SSL=${MAIL_SSL}\\n\ MAIL_USERNAME=${MAIL_USERNAME}\\n\ MAIL_PASSWORD=${MAIL_PASSWORD}\\n\ MAIL_SENDER=${MAIL_SENDER}\\n" # Echo init finish for test runs if [ -n "${TEST_RUN}" ]; then echo " " echo '**** [services.d] done ****' fi # set ferdi-server status echo " " echo "**** Checking Ferdi-server settings ****" if [ -f /config/config.txt ]; then [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/config.txt [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/config.txt [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/config.txt [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/config.txt [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/config.txt [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/config.txt [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/config.txt [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/config.txt [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/config.txt [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/config.txt [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/config.txt [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/config.txt [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/config.txt [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/config.txt [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/config.txt [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/config.txt [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/config.txt [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/config.txt [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/config.txt [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/config.txt rm /config/.env cp /config/config.txt /config/.env elif [ ! -f /config/config.txt ]; then echo " " echo "**** Generating .env file ****" cp /defaults/.env.example /config/.env [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/.env [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/.env [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/.env [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/.env [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/.env [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/.env [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/.env [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/.env [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/.env [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/.env [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/.env [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/.env [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/.env [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/.env [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/.env [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/.env [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/.env [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/.env [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/.env [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/.env cp /config/.env /config/config.txt fi # update .env if [ -f /app/.env ]; then rm /app/.env ln -s /config/.env /app/.env elif [ ! -f /app/.env ]; then ln -s /config/.env /app/.env fi # install adonisjs cli echo " " echo "**** Installing AdonisJS and deps ****" cd /app echo " " npm config set unsafe-perm true npm i -g @adonisjs/cli # install adonisjs dependencies npm install # make custom recipe dir if [ ! -f /app/recipes/dev ]; then mkdir -p /app/recipes/dev fi # setting the database helper if [ "${DB_CONNECTION}" = "sqlite" ]; then echo " " echo "**** DB helper loaded ****" else npm i ${DB_CONNECTION} echo " " echo "**** DB Helper loaded ****" fi # check for the database endpoint for 30 seconds echo " " echo "**** Checking DB endpoint ****" source .env END=$((SECONDS+30)) while [ ${SECONDS} -lt ${END} ] && [ "${DB_HOST} ${DB_PORT}" ]; do /usr/bin/nc -z ${DB_HOST} ${DB_PORT} && \ if [ ! -z "$(/usr/bin/nc -w1 ${DB_HOST} ${DB_PORT})" ]; then [ ! -z "${RUN}" ] && break RUN="RAN" # we sleep here again due to first run init on DB containers [ ! -f /dbwait.lock ] && sleep 5 else sleep 1 fi sleep 1 done # source the .env file source .env # database migration echo " " echo "**** Run DB migration ****" adonis migration:run --force # Create APP key if needed if [ ! -f "/config/FERDI_APP_KEY.txt" ]; then echo " " echo "**** Generating Ferdi-server app key for first run ****" adonis key:generate source .env echo $APP_KEY > /config/FERDI_APP_KEY.txt echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" sed -i "s/APP_KEY=/APP_KEY=$APP_KEY/g" /config/config.txt elif [ -f "/config/FERDI_APP_KEY.txt" ]; then echo " " echo "**** App Key found ****" APP_KEY=$(cat /config/FERDI_APP_KEY.txt) sed -i "s/APP_KEY=.*/APP_KEY=$APP_KEY/g" /config/config.txt echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" fi # set permissions chown -R abc:abc \ /config \ /app # set lockfile to avoid DB waits for this specific container touch /dbwait.lock