Files
monica/scripts/docker/entrypoint.sh
T

75 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -Eeo pipefail
# set environment variables with docker secrets in /run/secrets/*
supportedSecrets=( "DB_PASSWORD"
"DATABASE_URL"
"APP_KEY"
"MAIL_PASSWORD"
"REDIS_PASSWORD"
"AWS_ACCESS_KEY_ID"
"AWS_SECRET_ACCESS_KEY"
"AWS_KEY"
"AWS_SECRET"
"LOCATION_IQ_API_KEY"
"WEATHERAPI_KEY"
"MAPBOX_API_KEY"
)
for secret in "${supportedSecrets[@]}"; do
envFile="${secret}_FILE"
if [ -n "${!envFile}" ] && [ -f "${!envFile}" ]; then
val="$(< "${!envFile}")"
export "${secret}"="$val"
echo "${secret} environment variable was set by secret ${envFile}"
fi
done
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
MONICADIR=/var/www/html
ARTISAN="php ${MONICADIR}/artisan"
# Ensure storage directories are present
STORAGE=${MONICADIR}/storage
mkdir -p ${STORAGE}/logs
mkdir -p ${STORAGE}/app/public
mkdir -p ${STORAGE}/framework/views
mkdir -p ${STORAGE}/framework/cache
mkdir -p ${STORAGE}/framework/sessions
chown -R www-data:www-data ${STORAGE}
chmod -R g+rw ${STORAGE}
if [ "${DB_CONNECTION:-sqlite}" == "sqlite" ]; then
dbPath="${DB_DATABASE:-database/database.sqlite}"
if [ ! -f "$dbPath" ]; then
echo "Creating sqlite database at ${dbPath} — make sure it will be saved in a persistent volume."
touch "$dbPath"
chown www-data:www-data "$dbPath"
fi
fi
if [ -z "${APP_KEY:-}" ]; then
${ARTISAN} key:generate --no-interaction
key=$(grep APP_KEY .env | cut -c 9-)
echo "APP_KEY generated: $key — save it for later usage."
else
echo "APP_KEY already set."
fi
# Run migrations
${ARTISAN} monica:waitfordb
${ARTISAN} monica:setup --force -vv
# if [ ! -f "${STORAGE}/oauth-public.key" -o ! -f "${STORAGE}/oauth-private.key" ]; then
# echo "Passport keys creation ..."
# ${ARTISAN} passport:keys
# ${ARTISAN} passport:client --personal --no-interaction
# echo "! Please be careful to backup $MONICADIR/storage/oauth-public.key and $MONICADIR/storage/oauth-private.key files !"
# fi
fi
exec "$@"