From f6b816ae8ff23cdbda4510a7113910488e6ebd0d Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 28 Jul 2025 14:04:59 +0800 Subject: [PATCH] . --- php_server/Dockerfile | 96 ++++++++++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 25 deletions(-) diff --git a/php_server/Dockerfile b/php_server/Dockerfile index f545149..94c82c1 100644 --- a/php_server/Dockerfile +++ b/php_server/Dockerfile @@ -1,39 +1,85 @@ -# 使用官方 PHP 镜像,带扩展 -FROM php:8.0.30-fpm +# # 使用官方 PHP 镜像,带扩展 +# FROM php:8.0.30-fpm -# 安装系统依赖和 PHP 扩展所需的库 -RUN apt-get update && apt-get install -y \ - git unzip zip libpq-dev libzip-dev \ - libpng-dev libjpeg-dev libfreetype6-dev libstdc++6\ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install pdo_mysql zip gd +# # 安装系统依赖和 PHP 扩展所需的库 +# RUN apt-get update && apt-get install -y \ +# git unzip zip libpq-dev libzip-dev \ +# libpng-dev libjpeg-dev libfreetype6-dev libstdc++6\ +# && docker-php-ext-configure gd --with-freetype --with-jpeg \ +# && docker-php-ext-install pdo_mysql zip gd -# 安装 swoole 扩展(生产环境建议加 --enable-openssl 等参数) -RUN pecl install swoole \ - && docker-php-ext-enable swoole +# # 安装 swoole 扩展(生产环境建议加 --enable-openssl 等参数) +# RUN pecl channel-update pecl.php.net \ +# && pecl install swoole-4.8.13 \ +# && docker-php-ext-enable swoole -# 安装 Composer +# # 安装 Composer +# COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +# # 设置工作目录 +# WORKDIR /var/www + +# # 复制项目代码到容器中 +# COPY . . + +# # ✅ 安装 swoole_loader.so +# RUN ext_dir=$(php -i | grep '^extension_dir' | awk '{print $3}') \ +# && cp swoole_loader.so "$ext_dir/" \ +# && echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini + +# # 安装 PHP 依赖 +# RUN composer install --no-interaction --prefer-dist --optimize-autoloader + +# # 复制 .env 示例(如你已有 .env 可改这步) +# RUN cp .example.env .env || true + +# # 设置目录权限(视情况而定) +# RUN chown -R www-data:www-data /var/www + +# # 启动 PHP 内建服务器(仅用于验证) +# CMD ["php", "think", "run", "--host", "0.0.0.0", "--port", "8000"] + + + + +FROM php:8.0.30-fpm + +# 1) 系统依赖 + PHP 扩展 +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git unzip zip libpq-dev libzip-dev \ + libpng-dev libjpeg-dev libfreetype6-dev \ + libstdc++6 \ + libssl-dev libcurl4-openssl-dev \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install pdo_mysql zip gd \ + && rm -rf /var/lib/apt/lists/* + +# 2) Swoole 4.8.x(兼容 PHP 8.0) +RUN pecl channel-update pecl.php.net \ + && printf "\n" | pecl install swoole-4.8.13 \ + && docker-php-ext-enable swoole + +# 3) Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer -# 设置工作目录 WORKDIR /var/www -# 复制项目代码到容器中 +# 4) 复制代码 COPY . . -# ✅ 安装 swoole_loader.so -RUN ext_dir=$(php -i | grep '^extension_dir' | awk '{print $3}') \ - && cp swoole_loader.so "$ext_dir/" \ - && echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini +# 5) 安装 swoole_loader.so +RUN ext_dir="$(php -r 'echo ini_get("extension_dir");')" \ + && cp swoole_loader.so "$ext_dir/" \ + && echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini \ + # 立即验证能否加载,构建期即可失败 + && php -dextension=swoole_loader.so -m | grep -q swoole_loader -# 安装 PHP 依赖 -RUN composer install --no-interaction --prefer-dist --optimize-autoloader +# 6) Composer 依赖 +RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader \ + && composer clear-cache -# 复制 .env 示例(如你已有 .env 可改这步) -RUN cp .example.env .env || true - -# 设置目录权限(视情况而定) +# 7) 权限(如需) RUN chown -R www-data:www-data /var/www -# 启动 PHP 内建服务器(仅用于验证) CMD ["php", "think", "run", "--host", "0.0.0.0", "--port", "8000"]