mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2025-12-31 19:47:25 +01:00
Replaced mv command with cp for copying files to public folder and added cleanup of temporary public files. This is a robust alternative to mv for e.g ZFS and docker overlay2 Signed-off-by: benbrummer <info@benjamin-brummer.de>
71 lines
2.7 KiB
Bash
Executable File
71 lines
2.7 KiB
Bash
Executable File
#!/bin/sh -eu
|
|
|
|
# Set PDF generation browser path based on architecture
|
|
if [ "$(dpkg --print-architecture)" = "amd64" ]; then
|
|
export SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable
|
|
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then
|
|
export SNAPPDF_CHROMIUM_PATH=/usr/bin/chromium
|
|
fi
|
|
|
|
if [ "$*" = 'supervisord -c /etc/supervisor/supervisord.conf' ]; then
|
|
|
|
# Check for required folders and create if needed
|
|
[ -d /var/www/html/storage/app/public ] || mkdir -p /var/www/html/storage/app/public
|
|
[ -d /var/www/html/storage/framework/sessions ] || mkdir -p /var/www/html/storage/framework/sessions
|
|
[ -d /var/www/html/storage/framework/views ] || mkdir -p /var/www/html/storage/framework/views
|
|
[ -d /var/www/html/storage/framework/cache ] || mkdir -p /var/www/html/storage/framework/cache
|
|
|
|
# Workaround for application updates
|
|
if [ "$(ls -A /tmp/public)" ]; then
|
|
echo "Updating public folder..."
|
|
rm -rf /var/www/html/public/.htaccess \
|
|
/var/www/html/public/.well-known \
|
|
/var/www/html/public/*
|
|
cp -r /tmp/public/* \
|
|
/tmp/public/.htaccess \
|
|
/tmp/public/.well-known \
|
|
/var/www/html/public/ && \
|
|
rm -rf /tmp/public/
|
|
fi
|
|
echo "Public Folder is up to date"
|
|
|
|
# Ensure owner, file and directory permissions are correct
|
|
chown -R www-data:www-data \
|
|
/var/www/html/public \
|
|
/var/www/html/storage
|
|
find /var/www/html/public \
|
|
/var/www/html/storage \
|
|
-type f -exec chmod 644 {} \;
|
|
find /var/www/html/public \
|
|
/var/www/html/storage \
|
|
-type d -exec chmod 755 {} \;
|
|
|
|
# Clear and cache config in production
|
|
if [ "$APP_ENV" = "production" ]; then
|
|
runuser -u www-data -- php artisan migrate --force
|
|
runuser -u www-data -- php artisan cache:clear # Clear after the migration
|
|
runuser -u www-data -- php artisan ninja:design-update
|
|
runuser -u www-data -- php artisan optimize
|
|
|
|
# If first IN run, it needs to be initialized
|
|
if [ "$(runuser -u www-data -- php artisan tinker --execute='echo Schema::hasTable("accounts") && !App\Models\Account::all()->first();')" = "1" ]; then
|
|
echo "Running initialization..."
|
|
|
|
runuser -u www-data -- php artisan db:seed --force
|
|
|
|
if [ -n "${IN_USER_EMAIL}" ] && [ -n "${IN_PASSWORD}" ]; then
|
|
runuser -u www-data -- php artisan ninja:create-account --email "${IN_USER_EMAIL}" --password "${IN_PASSWORD}"
|
|
else
|
|
echo "Initialization failed - Set IN_USER_EMAIL and IN_PASSWORD in .env"
|
|
exit 1
|
|
fi
|
|
|
|
fi
|
|
echo "Production setup completed"
|
|
fi
|
|
|
|
echo "Starting supervisord..."
|
|
fi
|
|
|
|
exec "$@"
|