62 lines
1.8 KiB
Bash
62 lines
1.8 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
|
|
# 开发机的临时引导库属于可恢复的本机数据,拉取新代码后自动补齐
|
|
# 结构;命令会在共享系统数据库模式下直接跳过,绝不由开发机迁移
|
|
# 团队共享数据库。
|
|
run_artisan_as_web local-bootstrap:update --no-ansi
|
|
|
|
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 "$@"
|