ARG BASE_IMAGE=ulthon/ulthon_admin-base:latest
FROM ${BASE_IMAGE}

# XHProf 扩展（若基础镜像已含则跳过）
RUN install-php-extensions xhprof

# 设置工作目录
WORKDIR /var/www/html

# 预先拷贝 composer 文件并安装依赖，利用 Docker 缓存
COPY composer.json composer.lock /var/www/html/
RUN composer install --no-dev --no-interaction --no-scripts --no-autoloader

# 将当前目录下的文件拷贝到工作目录
COPY . /var/www/html

# B-route: build context 为仓库根，模式配置在 source/stack/<mode>/source/docker/
RUN rm -rf /var/www/html/source/docker && ln -sf /var/www/html/source/stack/docker-serve/source/docker /var/www/html/source/docker

# 生成自动加载文件
RUN composer dump-autoload --optimize --no-dev --classmap-authoritative

# XHProf: 安装 php-profiler 到独立目录
RUN mkdir -p /opt/xhprof \
    && cd /opt/xhprof \
    && composer require perftools/php-profiler --no-dev

# 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

VOLUME /var/www/html/runtime
VOLUME /var/www/html/public/storage
VOLUME /var/www/html/public/build
VOLUME /var/www/html/storage

# 挂载主目录，也可以选择直接挂载主目录，可以把上面的几个指定的目录删掉
# VOLUME ["/var/www/html"]

# 暴露 Nginx 端口
EXPOSE 8000

# B-route bind mount 模式：ENTRYPOINT 必须用完整路径（build 期 symlink 被 bind mount 覆盖）
RUN chmod +x /var/www/html/source/stack/docker-serve/source/docker/run.sh

# 启动 Nginx PHP 然后阻塞
ENTRYPOINT ["/bin/bash", "/var/www/html/source/stack/docker-serve/source/docker/run.sh"]

CMD ["server"]

