refactor(stack): default 模式改为 php think run,原 Docker 部署拆分为 docker-serve 模式

- source/stack/default/ 重命名为 docker-serve,保留 Dockerfile/docker-compose/CI/run.sh
- 新 default 模式仅提供 CI 文件(流水线中自动切换 docker-serve 再构建)
- 更新 stack.json 增加 docker-serve 模式声明
- 更新 README.md 同步模式说明
This commit is contained in:
augushong
2026-05-27 20:49:13 +08:00
parent 7ecbd03730
commit 28337c9694
7 changed files with 176 additions and 8 deletions

View File

@@ -22,6 +22,10 @@ jobs:
with:
fetch-depth: 1
- name: 切换到 docker-serve 模式
shell: bash
run: php think admin:stack:mode apply docker-serve
- name: 生成 .env
shell: bash
env:

View File

@@ -1,34 +0,0 @@
ARG BASE_IMAGE=ulthon/ulthon_admin-base:latest
FROM ${BASE_IMAGE}
# 设置工作目录
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
# 生成自动加载文件
RUN composer dump-autoload --optimize --no-dev --classmap-authoritative
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
RUN chmod +x /var/www/html/source/docker/run.sh
# 启动 Nginx PHP 然后阻塞
ENTRYPOINT ["/bin/bash", "/var/www/html/source/docker/run.sh"]
CMD ["server"]

View File

@@ -1,22 +0,0 @@
name: ulthon_admin
services:
ulthon_admin:
# 正式环境中您应当构建一个完整镜像使用镜像名称或id运行不要使用dockerfile
# image: ulthon/ulthon_admin:v1
build:
context: . # Dockerfile 所在的目录
dockerfile: Dockerfile # Dockerfile 的名称
restart: always
ports:
- "8000:8000" # HTTP
volumes:
- ./:/var/www/html # 直接分发代码可以去掉注释并将下面的目录增加注释
# - ./runtime:/var/www/html/runtime
# - ./public/storage:/var/www/html/public/storage
# - ./public/build:/var/www/html/public/build
# - ./storage:/var/www/html/storage
extra_hosts:
- "host.docker.internal:host-gateway"

View File

@@ -1,37 +0,0 @@
#!/bin/bash
# 将代码中的nginx复制到nginx配置文件中
cp /var/www/html/source/docker/nginx.conf /etc/nginx/sites-available/default
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
# 将代码中的php配置文件复制到php配置文件中
cp /var/www/html/source/docker/zz-phprun.ini /usr/local/etc/php/conf.d
cp /var/www/html/source/docker/zz-phpfpm.conf /usr/local/etc/php-fpm.d
# 设置目录权限,确保挂载卷后依然有效
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage
mkdir -p /var/www/html/memoryspace && chown -R www-data:www-data /var/www/html/memoryspace
# 运行redis
# nohup redis-server --requirepass "" &
# 输出参数
echo "参数为:$@"
# TODO增加自动批量运行并阻塞的脚本比如group default 会调用auto.sh的default的部分最终阻塞auth.sh的default部分可能会运行一系列的命令比如清空缓存踢人下线重置密码
if [ "$1" = "server" ] || [ "$1" = "" ]; then
# 运行定时任务 TODO:以指定用户运行
su - www-data -c "nohup php /var/www/html/think timer --local --quit &"
# 运行nginx
service nginx start
# 运行php-fpm
php-fpm
else
php "/var/www/html/""$@"
fi