Files
ulthon_admin/source/stack/docker-dev-sync/source/docker/run.sh
augushong 0a04181d12 revert(stack): un-merge docker-dev-sync, restore as independent B-route directory
docker-dev 清理合并残留:去掉 rsync/mkdir/chmod、删 ulthon_admin_sync 服务、
删 .env(COMPOSE_PROFILES)、删 sync.sh、删 .dockerignore、去 SYNC_INTERVAL。
docker-dev-sync 恢复独立目录并 B-route 化(context: ../../..)。
两个模式各自独立、各自完整。
2026-07-22 22:42:58 +08:00

63 lines
2.4 KiB
Bash

#!/bin/bash
# ============================================
# run.sh - docker-dev-sync entrypoint
# ============================================
# 1. Syncs host code from /var/www/source to /var/www/html
# 2. Configures nginx and php-fpm
# 3. Starts background sync polling
# 4. Starts application services
# ============================================
# ---- Step 1: Initial code sync (foreground, blocking) ----
echo "[run] Checking source mount..."
if [ -d "/var/www/source" ] && [ "$(ls -A /var/www/source 2>/dev/null)" ]; then
echo "[run] Source directory mounted, performing initial sync..."
/bin/bash /var/www/html/source/docker/sync.sh init
echo "[run] Initial sync finished."
# Start background polling
/bin/bash /var/www/html/source/docker/sync.sh watch &
SYNC_PID=$!
echo "[run] Background sync polling started (PID: ${SYNC_PID}, interval: ${SYNC_INTERVAL:-3}s)."
else
echo "[run] WARNING: /var/www/source is not mounted or empty."
echo "[run] Running with build-time files only (no live sync)."
fi
# ---- Step 2: Configure services ----
# Copy nginx config
cp /var/www/html/source/docker/nginx.conf /etc/nginx/sites-available/default
ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
# Copy php config files
cp /var/www/html/source/docker/zz-phprun.ini /usr/local/etc/php/conf.d
cp /var/www/html/source/docker/zz-phpfpm.conf /usr/local/etc/php-fpm.d
# Dev mode: override production PHP config (Opcache, error display, Xdebug)
cp /var/www/html/source/docker/zzz-dev.ini /usr/local/etc/php/conf.d
cp /var/www/html/source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d
# ---- Step 3: Set directory permissions ----
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage
mkdir -p /var/www/html/memoryspace && chown -R www-data:www-data /var/www/html/memoryspace
# ---- Step 4: Output parameters and start services ----
echo "参数为:$@"
if [ "$1" = "server" ] || [ "$1" = "" ]; then
# Run timer (background)
su -www-data -c "nohup php /var/www/html/think timer --local --quiet &"
# Run nginx
service nginx start
# Run php-fpm (foreground, keeps container alive)
php-fpm
else
php "/var/www/html/""$@"
fi