2018-07-10 22:32:19 +05:30
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
|
|
|
|
XDEBUG_EXTENSION_FILE="/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini"
|
2024-12-02 15:40:55 +05:30
|
|
|
XDEBUG_CONFIG_FILE="/usr/local/etc/php/conf.d/xdebug.ini"
|
2018-07-10 22:32:19 +05:30
|
|
|
PHP_PROD_INI="/usr/local/etc/php/conf.d/php.prod.ini"
|
|
|
|
PHP_DEV_INI="/usr/local/etc/php/conf.d/php.dev.ini"
|
2024-12-02 15:40:55 +05:30
|
|
|
YII_EXEC="/var/www/html/yii"
|
2018-07-10 22:32:19 +05:30
|
|
|
|
|
|
|
if [ "$YII_DEBUG" = "true" ] || [ "$YII_DEBUG" = "1" ] ; then
|
|
|
|
echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > $XDEBUG_EXTENSION_FILE
|
2024-12-02 15:40:55 +05:30
|
|
|
HOST_IP="$(ip route | awk '/default/ { print $3 }')"
|
|
|
|
sed -i "/xdebug\.client_host/s/=.*/=${HOST_IP}/" $XDEBUG_CONFIG_FILE
|
2018-07-10 22:32:19 +05:30
|
|
|
mv ${PHP_PROD_INI}{,.disabled} 2> /dev/null || true
|
|
|
|
mv ${PHP_DEV_INI}{.disabled,} 2> /dev/null || true
|
|
|
|
else
|
|
|
|
rm -f $XDEBUG_EXTENSION_FILE
|
|
|
|
mv ${PHP_DEV_INI}{,.disabled} 2> /dev/null || true
|
|
|
|
mv ${PHP_PROD_INI}{.disabled,} 2> /dev/null || true
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Create all necessary folders
|
2019-08-03 04:56:46 +05:30
|
|
|
APP_DIRS=(
|
|
|
|
"api/runtime"
|
|
|
|
"console/runtime"
|
|
|
|
"data/certs"
|
|
|
|
)
|
|
|
|
for path in ${APP_DIRS[*]}; do
|
|
|
|
if [ ! -d "$path" ]; then
|
|
|
|
echo "[bootstrap] Creating $path folder"
|
|
|
|
mkdir -p "$path"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $(ls -ld $path | awk '{print $3}' | tail -1) != "www-data" ]; then
|
|
|
|
echo "[bootstrap] Changing $path folder owner"
|
|
|
|
chown -R www-data:www-data "$path"
|
|
|
|
fi
|
|
|
|
done
|
2018-07-10 22:32:19 +05:30
|
|
|
|
|
|
|
# Fix permissions for cron tasks
|
|
|
|
chmod 644 /etc/cron.d/*
|
|
|
|
|
2021-03-03 19:34:42 +05:30
|
|
|
JWT_PRIVATE_PEM_LOCATION="${JWT_PRIVATE_PEM_LOCATION:-/var/www/html/data/certs/private.pem}"
|
|
|
|
JWT_PUBLIC_PEM_LOCATION="${JWT_PUBLIC_PEM_LOCATION:-/var/www/html/data/certs/public.pem}"
|
|
|
|
|
2019-08-02 21:46:34 +05:30
|
|
|
if [ ! -f "$JWT_PRIVATE_PEM_LOCATION" ] ; then
|
2019-08-03 04:56:46 +05:30
|
|
|
echo "There is no private key. Generating the new one."
|
|
|
|
openssl ecparam -name prime256v1 -genkey -noout -out "$JWT_PRIVATE_PEM_LOCATION"
|
|
|
|
openssl ec -in "$JWT_PRIVATE_PEM_LOCATION" -pubout -out "$JWT_PUBLIC_PEM_LOCATION"
|
|
|
|
chown www-data:www-data "$JWT_PRIVATE_PEM_LOCATION" "$JWT_PUBLIC_PEM_LOCATION"
|
2019-08-02 21:46:34 +05:30
|
|
|
fi
|
|
|
|
|
2018-07-10 22:32:19 +05:30
|
|
|
if [ "$1" = "crond" ] ; then
|
|
|
|
# see: https://github.com/dubiousjim/dcron/issues/13
|
|
|
|
# ignore using `exec` for `dcron` to get another pid instead of `1`
|
|
|
|
# exec "$@"
|
|
|
|
"$@"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "yii" ] ; then
|
|
|
|
shift
|
|
|
|
php $YII_EXEC "$@"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "sh" ] || [ "$1" = "bash" ] || [ "$1" = "composer" ] || [ "$1" = "php" ] ; then
|
|
|
|
exec "$@"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Generating RBAC rules"
|
|
|
|
php $YII_EXEC rbac/generate
|
|
|
|
|
2024-12-02 15:40:55 +05:30
|
|
|
echo "Running database migrations"
|
2021-02-14 23:31:49 +05:30
|
|
|
wait-for-it "${DB_HOST:-db}:${DB_PORT:-3306}" -s -t 0 -- php $YII_EXEC migrate/up --interactive=0
|
2018-07-10 22:32:19 +05:30
|
|
|
|
2024-12-02 15:40:55 +05:30
|
|
|
echo "Launching"
|
2018-07-10 22:32:19 +05:30
|
|
|
exec "$@"
|