# # 使用官方 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 # # 安装 swoole 扩展(生产环境建议加 --enable-openssl 等参数) # RUN pecl channel-update pecl.php.net \ # && pecl install swoole-4.8.13 \ # && docker-php-ext-enable swoole # # 安装 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 . . # 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 # 6) Composer 依赖 RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader \ && composer clear-cache # 7) 权限(如需) RUN chown -R www-data:www-data /var/www CMD ["php", "think", "run", "--host", "0.0.0.0", "--port", "8000"]