CaiWuXiTong/deploy/entrypoint.sh

57 lines
1.5 KiB
Bash

#!/bin/sh
set -eu
if [ "$(id -u)" = "0" ]; then
mkdir -p \
storage/app/public \
storage/app/temp \
storage/app/uploads \
storage/framework/cache/data \
storage/framework/sessions \
storage/framework/views \
storage/logs \
bootstrap/cache
# 修复旧容器或 root CLI 遗留的属主;之后所有 Artisan 命令都降权执行,
# 避免再次产生网页进程无法写入的缓存、日志和备份文件。
chown -R www-data:www-data storage bootstrap/cache
if [ -f .env ]; then
chown www-data:www-data .env
chmod 660 .env
fi
fi
assert_web_writable() {
runuser -u www-data -- test -w storage/app
runuser -u www-data -- test -w storage/framework/views
runuser -u www-data -- test -w storage/logs
runuser -u www-data -- test -w bootstrap/cache
if [ -f .env ]; then
runuser -u www-data -- test -w .env
fi
}
run_artisan_as_web() {
runuser -u www-data -- php artisan "$@"
}
if [ "${1:-}" = "apache2-foreground" ]; then
sed -ri 's/^Listen 80$/Listen 18088/' /etc/apache2/ports.conf
assert_web_writable
run_artisan_as_web optimize:clear
run_artisan_as_web package:discover --ansi
if grep -Eq '^APP_INSTALLED=(true|1)$' .env; then
if [ "${RUN_MIGRATIONS:-0}" = "1" ]; then
run_artisan_as_web migrate --force
fi
run_artisan_as_web config:cache
run_artisan_as_web view:cache
fi
fi
exec "$@"