mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
feat(stack): 新增 docker-dev-sync 模式,优化 Windows 下 Docker 开发 I/O 性能
- 新增 source/stack/docker-dev-sync/ 模式目录 - 宿主代码映射到 /var/www/source(bind mount 中转) - 容器内 rsync 定时同步到 /var/www/html(原生文件系统) - vendor 由 Docker build 管理,不参与同步 - rsync 使用 --no-perms 避免保留 Windows 源文件权限 - 排除 docker-dev/、runtime/、.git/ 等无关目录 - SYNC_INTERVAL 环境变量可配置轮询间隔(默认 3 秒) - 更新 stack.json 注册模式并声明 sync.sh 为托管文件 - 调整 CI 构建流程:先安装依赖再切换 stack 模式
This commit is contained in:
86
source/stack/docker-dev-sync/Dockerfile
Normal file
86
source/stack/docker-dev-sync/Dockerfile
Normal file
@@ -0,0 +1,86 @@
|
||||
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 and rsync (for sync mechanism)
|
||||
RUN apt-get install -y nginx rsync
|
||||
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
# Generate autoloader (without --no-dev optimizations)
|
||||
RUN composer dump-autoload
|
||||
|
||||
# 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/docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini
|
||||
COPY source/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini
|
||||
|
||||
# Create source mount point (host code staging area)
|
||||
RUN mkdir -p /var/www/source
|
||||
|
||||
VOLUME /var/www/html/runtime
|
||||
VOLUME /var/www/html/public/storage
|
||||
VOLUME /var/www/html/public/build
|
||||
VOLUME /var/www/html/storage
|
||||
|
||||
# Expose Nginx port
|
||||
EXPOSE 8000
|
||||
|
||||
RUN chmod +x /var/www/html/source/docker/sync.sh
|
||||
RUN chmod +x /var/www/html/source/docker/run.sh
|
||||
|
||||
# Start Nginx and PHP-FPM
|
||||
ENTRYPOINT ["/bin/bash", "/var/www/html/source/docker/run.sh"]
|
||||
|
||||
CMD ["server"]
|
||||
Reference in New Issue
Block a user