# PHP-FPM镜像 FROM webdevops/php:8.2-fpm # 使用阿里云镜像源 RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \ && sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list # 安装依赖时添加--no-install-recommends减少不必要的包 RUN apt-get update && apt-get install -y --no-install-recommends \ git \ zip \ unzip \ libzip-dev \ libpng-dev \ libonig-dev \ libxml2-dev \ # 合并扩展安装命令 && docker-php-ext-install -j$(nproc) pdo_mysql mbstring exif pcntl bcmath gd sockets zip \ # 清理缓存减少镜像体积 && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 安装Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www COPY . . RUN composer install --no-dev --optimize-autoloader # 设置权限 RUN chown -R www-data:www-data /var/www/storage RUN chmod -R 775 /var/www/storage # Nginx配置 FROM nginx:alpine COPY --from=0 /var/www /var/www COPY .docker/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 # 直接启用所需扩展(该镜像已预装大部分扩展) RUN docker-php-ext-enable \ pdo_mysql \ mbstring \ exif \ pcntl \ bcmath \ gd \ sockets \ zip # 使用并行编译(-j参数) RUN docker-php-ext-install -j$(nproc) pdo_mysql # 优先使用pecl安装(部分扩展有预编译包) RUN pecl install -o -f redis \ && docker-php-ext-enable redis # 禁用Xdebug等开发扩展 RUN if [ "$APP_ENV" = "production" ]; then \ pecl uninstall xdebug \ && rm -rf /tmp/pear; \ fi # 第一阶段:构建依赖 FROM php:8.2-fpm as builder # 使用国内composer镜像 RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ COPY composer.json composer.lock ./ RUN composer install --no-dev --no-scripts --optimize-autoloader # 第二阶段:生产镜像 FROM php:8.2-fpm # 只复制必要文件 COPY --from=builder /app/vendor /app/vendor COPY . /app # 使用预编译的扩展(需自行构建) # COPY ./docker/php/extensions/* /usr/local/lib/php/extensions/no-debug-non-zts-20210902/ # 使用阿里云镜像源 FROM php:8.2-fpm # 基础系统优化 RUN set -eux; \ # 更换镜像源 sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list; \ sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list; \ # 安装必要工具 apt-get update && apt-get install -y --no-install-recommends \ git \ zip \ unzip \ libzip-dev \ libpng-dev \ libonig-dev \ libxml2-dev; \ # 批量安装扩展 docker-php-ext-configure zip --with-zip; \ docker-php-ext-install -j$(nproc) \ pdo_mysql \ mbstring \ exif \ pcntl \ bcmath \ gd \ sockets \ zip; \ # 清理缓存 apt-get clean; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; # 使用国内composer源 COPY --from=composer:latest /usr/bin/composer /usr/bin/composer RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/