镜像调整

This commit is contained in:
suguo 2025-02-14 16:02:42 +08:00
parent c00fd405fb
commit 5958895f28
1 changed files with 30 additions and 118 deletions

View File

@ -1,126 +1,38 @@
# 使用官方镜像并配置国内加速 # 使用官方CLI镜像并配置阿里云加速
FROM php:8.2-fpm FROM php:8.2-cli
# 根据镜像类型自动选择包管理工具 # 配置系统源Debian
RUN set -eux; \ RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
# 检测是否是Alpine && sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
if [ -f /etc/alpine-release ]; then \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories; \
apk add --no-cache \
git \
zip \
unzip \
libzip-dev \
libpng-dev \
oniguruma-dev \
libxml2-dev; \
else \
# Debian系处理
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; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*; \
fi
# 公共安装步骤 # 安装基础依赖(按需精简)
RUN docker-php-ext-install pdo_mysql mbstring bcmath gd zip RUN apt-get update && apt-get install -y --no-install-recommends \
# 配置Composer国内镜像
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
WORKDIR /var/www
# 先复制依赖文件利用缓存
COPY composer.json composer.lock ./
# 安装生产依赖不安装dev依赖
RUN composer install --no-dev --optimize-autoloader --no-scripts
# 复制项目文件
COPY . .
# 设置存储目录权限
RUN chown -R www-data:www-data storage
RUN chmod -R 775 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/
# 使用Alpine系镜像
FROM php:8.2-fpm-alpine
# 配置Alpine镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 使用apk安装依赖
RUN apk add --no-cache \
git \ git \
zip \ zip \
unzip \ unzip \
libzip-dev \ libzip-dev \
libpng-dev \ && docker-php-ext-install zip pcntl \
oniguruma-dev \ && apt-get clean \
libxml2-dev && rm -rf /var/lib/apt/lists/*
# 安装PHP扩展 # 安装Composer阿里云镜像
RUN docker-php-ext-install pdo_mysql mbstring bcmath gd zip
# 使用国内composer源
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 设置工作目录
WORKDIR /usr/src/app
# 先复制依赖文件利用Docker缓存
COPY composer.json composer.lock ./
# 安装生产依赖
RUN composer install --no-dev --optimize-autoloader
# 复制全部项目文件
COPY . .
# 设置执行权限(如有需要)
RUN chmod +x your-script.php
# 运行入口脚本
CMD ["php", "./your-script.php"]