From 46135002f9e193b910efc02073f985b215bee034 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Thu, 25 Dec 2025 16:51:19 +0800 Subject: [PATCH] revert: 0443cc46ecdced7dd1e380f713d94870e40898d2 --- docker/php/Dockerfile | 36 +----------------------- docker/php/entrypoint.sh | 61 ++++++---------------------------------- 2 files changed, 10 insertions(+), 87 deletions(-) diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 8b2831a3b..ab5bd85da 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -86,41 +86,7 @@ EXPOSE 9000 8080 # 添加在Dockerfile末尾,CMD命令之前 COPY ./entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh - -# 设置环境变量来控制entrypoint行为 -# 可以通过docker run -e 或docker-compose.yml覆盖这些值 -# ENV PHP_APP_ROOT=/var/www/html \ -# USER_ID=33 \ -# GROUP_ID=33 -# ======================================== -# Dockerfile 配置选项说明 -# ======================================== -# -# 1. 默认行为(当前配置): -# - 使用 /var/www/html 作为应用根目录 -# - 启动 supervisord -# - 适用于标准Web应用 -# -# 2. 自定义应用根目录: -# 在docker run时覆盖环境变量: -# docker run -e PHP_APP_ROOT=/custom/app php-app -# -# 3. 传递路径参数给entrypoint: -# 修改ENTRYPOINT来包含路径: -# ENTRYPOINT ["/usr/local/bin/entrypoint.sh", "/custom/path"] -# CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] -# -# 4. 不同启动命令: -# 修改CMD来启动不同服务: -# CMD ["php-fpm"] # 直接启动PHP-FPM -# CMD ["/bin/bash"] # 启动shell进行调试 -# CMD ["apache2ctl", "-D", "FOREGROUND"] # 启动Apache -# -# ======================================== - -# 设置ENTRYPOINT,注意这里不会带路径参数 -# 路径可以通过环境变量PHP_APP_ROOT控制,默认是/var/www/html ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] -# CMD会作为参数传递给entrypoint.sh +# 修改CMD命令 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] \ No newline at end of file diff --git a/docker/php/entrypoint.sh b/docker/php/entrypoint.sh index 773779653..072704ef2 100644 --- a/docker/php/entrypoint.sh +++ b/docker/php/entrypoint.sh @@ -1,47 +1,12 @@ #!/bin/bash # 移除 set -e 以便更好的错误控制 -# 显示帮助信息 -show_help() { - cat << EOF -=== Web应用权限初始化脚本 === - -用法: $0 [--help|-h] - -参数: - --help, -h 显示此帮助信息 - - -优先级: - 1. 环境变量 PHP_APP_ROOT - 2. 默认值 /var/www/html - -示例: - $0 # 使用环境变量或默认值 - PHP_APP_ROOT=/custom $0 /var/www # 参数优先,忽略环境变量 - -EOF -} - echo "=== Web应用权限初始化 ===" -# 默认值 -APP_ROOT="/var/www/html" -SOURCE="默认值" +# 定义应用根目录,优先使用环境变量,否则使用默认值 +APP_ROOT="${PHP_APP_ROOT:-/var/www/html}" -if [ -n "${PHP_APP_ROOT}" ]; then - # 其次使用环境变量 - APP_ROOT="${PHP_APP_ROOT}" - SOURCE="环境变量 PHP_APP_ROOT" -fi - -echo "使用应用根目录: $APP_ROOT (来源: $SOURCE)" - -# 验证应用根目录是否有效 -if [ ! -d "$APP_ROOT" ]; then - echo "⚠️ 警告: 应用根目录 '$APP_ROOT' 不存在, 程序退出" - exit 1 -fi +echo "使用应用根目录: $APP_ROOT" # 创建统一的Web组并配置所有用户(最高效的权限管理) configure_web_users() { @@ -103,9 +68,9 @@ configure_web_users() { if id "$web_user" &>/dev/null; then echo "📝 处理Web用户: $web_user" - # 获取用户当前组信息(安全的变量处理) - current_groups=$(id -Gn "$web_user" 2>/dev/null | tr '\n' ' ' | sed 's/ *$//') - echo " 当前所属组: ${current_groups:-无}" + # 获取用户当前组信息(安全的变量处理) + current_groups=$(id -Gn "$web_user" 2>/dev/null | tr '\n' ' ' | sed 's/ *$//') + echo " 当前所属组: ${current_groups:-无}" # 尝试将用户加入统一组(使用-a参数保留现有组,只添加新组) if usermod -a -G "$WEB_GROUP" "$web_user" 2>/dev/null; then @@ -292,8 +257,8 @@ EOF # 执行权限测试 if [ -f "$test_file" ]; then echo "使用测试文件: $test_file" - echo "文件权限: $(stat -c '%a %n' \"$test_file\")" - echo "文件所有者: $(stat -c '%U:%G' \"$test_file\")" + echo "文件权限: $(stat -c '%a %n' "$test_file")" + echo "文件所有者: $(stat -c '%U:%G' "$test_file")" # 测试所有Web用户的权限(通过组权限) for test_user in "www-data" "www" "apache" "nginx"; do @@ -370,12 +335,4 @@ fi echo "=== 启动应用 ===" # 执行原有的启动命令 -# 移除第一个参数(应用根目录),只传递后续参数给应用 -if [ $# -gt 0 ]; then - # 如果有应用根目录参数,传递剩余参数 - shift 1 - exec "$@" -else - # 没有额外参数,正常执行 - exec "$@" -fi \ No newline at end of file +exec "$@" \ No newline at end of file