mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-10-29 17:08:21 +08:00
- docker-dev/docker-dev-sync 删除 4 行 VOLUME:匿名卷会遮蔽整目录 bind mount 的宿主 runtime(已实证:宿主看不到容器日志) - run.sh 统一四目录 777 + umask + 正确 su 写法(-s /bin/sh,www-data 为 nologin) - serve/full/author 生产模式 VOLUME 保留作 docker run -v 兜底
100 lines
4.2 KiB
Docker
100 lines
4.2 KiB
Docker
FROM php:8.2-fpm-bookworm
|
||
|
||
RUN rm -rf /etc/apt/sources.list.d/* \
|
||
&& echo "deb http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list \
|
||
&& echo "deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list \
|
||
&& echo "deb http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list
|
||
|
||
RUN apt-get update
|
||
|
||
# Install nginx
|
||
RUN apt-get install -y nginx
|
||
|
||
ADD --chmod=0755 https://nexus.hl7.top:1243/repository/github-raw-proxy/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||
|
||
# Configure proxy
|
||
RUN sed -i 's|aomedia.googlesource.com|nexus.hl7.top:1243/repository/raw-aomedia.googlesource.com|g' /usr/local/bin/install-php-extensions
|
||
RUN sed -i 's|chromium.googlesource.com|nexus.hl7.top:1243/repository/raw-chromium.googlesource.com|g' /usr/local/bin/install-php-extensions
|
||
RUN sed -i 's|https://github.com|https://nexus.hl7.top:1243/repository/github-raw-proxy|g' /usr/local/bin/install-php-extensions
|
||
|
||
RUN install-php-extensions pdo_mysql
|
||
RUN install-php-extensions gd
|
||
RUN install-php-extensions fileinfo
|
||
RUN install-php-extensions opcache
|
||
RUN install-php-extensions redis
|
||
RUN install-php-extensions event
|
||
RUN install-php-extensions imagick
|
||
RUN install-php-extensions zip
|
||
RUN install-php-extensions pcntl
|
||
RUN install-php-extensions xdebug
|
||
RUN install-php-extensions xhprof
|
||
|
||
# Clean default Nginx config
|
||
RUN rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
||
|
||
|
||
# Install other dependencies
|
||
# RUN apt-get install -y ffmpeg
|
||
# RUN apt-get install -y libreoffice
|
||
# RUN apt-get install -y redis-server
|
||
# RUN apt-get install -y git
|
||
|
||
# Set working directory
|
||
WORKDIR /var/www/html
|
||
|
||
# Install Composer
|
||
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||
RUN chmod +x /usr/local/bin/composer
|
||
RUN composer config -g repos.packagist composer https://nexus.hl7.top:1243/repository/composer-proxy/
|
||
|
||
# Set working directory
|
||
WORKDIR /var/www/html
|
||
|
||
# Pre-copy composer files and install dependencies (with dev packages)
|
||
COPY composer.json composer.lock /var/www/html/
|
||
RUN composer install --no-interaction --no-scripts
|
||
|
||
# Copy all files to working directory
|
||
COPY . /var/www/html
|
||
|
||
# B-route: build context 为仓库根,模式配置在 source/stack/<mode>/source/docker/
|
||
# 仓库根有全局 source/docker/(仅基础配置),模式目录内的是超集(含 run.sh、dev 配置)
|
||
# 删除全局目录并创建 symlink 指向模式专属配置,让 run.sh 引用的路径能找到文件
|
||
RUN rm -rf /var/www/html/source/docker \
|
||
&& ln -sf /var/www/html/source/stack/docker-dev/source/docker /var/www/html/source/docker
|
||
|
||
# Generate autoloader (without --no-dev optimizations)
|
||
RUN composer dump-autoload
|
||
|
||
# XHProf: 安装 php-profiler 到独立目录(避免 bind mount 覆盖 /var/www/html)
|
||
RUN mkdir -p /opt/xhprof \
|
||
&& cd /opt/xhprof \
|
||
&& composer require perftools/php-profiler
|
||
|
||
# XHProf: 复制采集器 bootstrap(全局配置,不受 bind mount 影响)
|
||
COPY source/docker/xhprof-bootstrap.php /opt/xhprof/xhprof-bootstrap.php
|
||
|
||
# XHProf: 配置 auto_prepend_file(zzz 前缀确保最后加载)
|
||
RUN echo 'auto_prepend_file = /opt/xhprof/xhprof-bootstrap.php' > /usr/local/etc/php/conf.d/zzz-xhprof.ini
|
||
|
||
# Internal install composer and dependencies, comment out if not needed
|
||
# RUN install-php-extensions @composer
|
||
|
||
# Dev mode PHP config (overrides zz-phprun.ini)
|
||
COPY source/stack/docker-dev/source/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini
|
||
COPY source/stack/docker-dev/source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini
|
||
|
||
# 开发模式整目录 bind mount:子路径 VOLUME 匿名卷会遮蔽宿主 runtime 等目录,
|
||
# 权限与持久化由 run.sh 启动时 chmod 777 + 宿主目录直接承担,故不声明 VOLUME
|
||
|
||
# Expose Nginx port
|
||
EXPOSE 8000
|
||
|
||
# B-route bind mount 模式:ENTRYPOINT 必须用完整路径(build 期 symlink 被 bind mount 覆盖)
|
||
RUN chmod +x /var/www/html/source/stack/docker-dev/source/docker/run.sh
|
||
|
||
# Start Nginx and PHP-FPM
|
||
ENTRYPOINT ["/bin/bash", "/var/www/html/source/stack/docker-dev/source/docker/run.sh"]
|
||
|
||
CMD ["server"]
|