120 lines
3.1 KiB
Docker
120 lines
3.1 KiB
Docker
# 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/ |