cms-manage/Dockerfile

133 lines
3.5 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 使用官方镜像并配置国内加速
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; \
docker-php-ext-install -j$(nproc) \
pdo_mysql \
mbstring \
bcmath \
gd \
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/
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/
# 使用阿里云镜像源
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/