镜像调整
This commit is contained in:
parent
c00fd405fb
commit
5958895f28
132
Dockerfile
132
Dockerfile
|
|
@ -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 \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
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/*
|
||||||
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
|
|
||||||
|
|
||||||
# 公共安装步骤
|
# 安装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 /var/www
|
# 设置工作目录
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
# 先复制依赖文件利用缓存
|
# 先复制依赖文件(利用Docker缓存)
|
||||||
COPY composer.json composer.lock ./
|
COPY composer.json composer.lock ./
|
||||||
|
|
||||||
# 安装生产依赖(不安装dev依赖)
|
# 安装生产依赖
|
||||||
RUN composer install --no-dev --optimize-autoloader --no-scripts
|
RUN composer install --no-dev --optimize-autoloader
|
||||||
|
|
||||||
# 复制项目文件
|
# 复制全部项目文件
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# 设置存储目录权限
|
# 设置执行权限(如有需要)
|
||||||
RUN chown -R www-data:www-data storage
|
RUN chmod +x your-script.php
|
||||||
RUN chmod -R 775 storage
|
|
||||||
|
|
||||||
# 多阶段构建Nginx
|
# 运行入口脚本
|
||||||
FROM nginx:alpine
|
CMD ["php", "./your-script.php"]
|
||||||
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 \
|
|
||||||
zip \
|
|
||||||
unzip \
|
|
||||||
libzip-dev \
|
|
||||||
libpng-dev \
|
|
||||||
oniguruma-dev \
|
|
||||||
libxml2-dev
|
|
||||||
|
|
||||||
# 安装PHP扩展
|
|
||||||
RUN docker-php-ext-install pdo_mysql mbstring bcmath gd zip
|
|
||||||
|
|
||||||
# 使用国内composer源
|
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
||||||
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
|
|
||||||
Loading…
Reference in New Issue