cms-manage/Dockerfile

120 lines
3.1 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.

# 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/