更新 Dockerfile

This commit is contained in:
ivampiresp 2025-07-11 09:32:01 +00:00
parent d547a02857
commit e86ffb02ff

View File

@ -1,29 +1,55 @@
FROM debian:12-slim 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 && \ COPY php.ini /etc/php/8.4/cli/conf.d/99-custom.ini
# 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