From e86ffb02ff031c325c58b2357a62a922b73fda27 Mon Sep 17 00:00:00 2001 From: ivampiresp Date: Fri, 11 Jul 2025 09:32:01 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 78 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0aedf27..4cc3ac6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,55 @@ FROM debian:12-slim +# 合并所有安装操作到单个 RUN 层减少镜像体积 +RUN set -eux; \ + # 创建快捷命令 + echo '#!/bin/bash\nphp artisan "$@"' > /usr/bin/art && \ + chmod +x /usr/bin/art; \ + \ + # 更新系统并安装基础工具 + apt update; \ + apt install -y --no-install-recommends wget ca-certificates; \ + \ + # 添加 PHP 仓库 + wget --no-check-certificate -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg; \ + echo "deb https://packages.sury.org/php/ bookworm main" > /etc/apt/sources.list.d/php.list; \ + \ + # 安装 PHP 及运行时依赖 + apt update; \ + apt install -y --no-install-recommends \ + php8.4-cli \ + php8.4-bcmath \ + php8.4-curl \ + php8.4-mbstring \ + php8.4-zip \ + php8.4-dom \ + php8.4-mysql \ + php8.4-sqlite3 \ + php8.4-redis \ + php8.4-pgsql \ + php8.4-gd \ + php8.4-intl \ + php8.4-bz2 \ + php8.4-mongodb \ + php8.4-memcached \ + libz-dev; \ + \ + # 安装构建依赖 (仅编译时使用) + apt install -y --no-install-recommends php8.4-dev build-essential php-pear; \ + \ + # 安装 PECL 扩展 + pecl channel-update pecl.php.net; \ + MAKEFLAGS="-j $(nproc)" pecl install grpc openswoole; \ + \ + # 移除构建依赖和缓存 + strip --strip-debug /usr/lib/php/*/*.so; \ + apt purge -y --auto-remove php8.4-dev build-essential php-pear; \ + rm -rf /var/lib/apt/lists/* /tmp/pear /usr/share/man/*; \ + \ + # 安装 Composer + wget -qO /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar; \ + chmod +x /usr/bin/composer; \ + composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ -RUN echo '#!/bin/bash\nphp artisan "$@"' > /usr/bin/art && \ - chmod +x /usr/bin/art && \ - # DEBIAN_FRONTEND=noninteractive echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \ - # echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ - # echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ - # echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ - # rm -rf /etc/apt/sources.list.d/debian.sources && \ - apt update && \ - apt install -y --no-install-recommends wget curl lsb-release unzip ca-certificates && \ - wget --no-check-certificate -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ - sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' && \ - apt update && \ - apt install -y --no-install-recommends libz-dev build-essential php8.4-cli php8.4-bcmath php8.4-bz2 php8.4-curl php8.4-redis php8.4-mongodb php8.4-pgsql php8.4-intl php8.4-mbstring php8.4-zip php8.4-gd php8.4-dom php8.4-mysql php8.4-dev php8.4-sqlite3 php-pear php8.4-memcached - -RUN pecl channel-update pecl.php.net && MAKEFLAGS="-j $(nproc)" pecl install grpc && pecl install openswoole && strip --strip-debug /usr/lib/php/*/*.so && \ - apt autoremove --purge -y php8.4-dev php-pear build-essential libz-dev lsb-release && \ - apt-get clean autoclean -y && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/lib/{apt,dpkg,cache,log}/ && \ - wget https://mirrors.aliyun.com/composer/composer.phar -O /usr/bin/composer && \ - chmod +x /usr/bin/composer && \ - composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \ - rm -rf /tmp/* - -COPY php.ini /etc/php/8.4/cli/conf.d/99-custom.ini +# 最后复制配置文件 (单独层便于修改) +COPY php.ini /etc/php/8.4/cli/conf.d/99-custom.ini \ No newline at end of file