diff --git a/.helloagents/CHANGELOG.md b/.helloagents/CHANGELOG.md index 5d5b74e..0f3b2da 100644 --- a/.helloagents/CHANGELOG.md +++ b/.helloagents/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## [0.6.7] - 2026-04-28 + +### 快速修改 +- **[deploy]**: 调整 `deploy/xboard-server` 更新脚本,改为拉取镜像后通过一次性 `web` 容器执行 `php artisan xboard:update`,再重新 `up -d` 拉起服务;README 同步更新后续升级命令 — by yinjianm + - 类型: 快速修改(无方案包) + - 文件: deploy/xboard-server/scripts/update.sh, deploy/xboard-server/README.md + ## [0.6.6] - 2026-04-28 ### 新增 diff --git a/.helloagents/modules/deploy.md b/.helloagents/modules/deploy.md index 9f9fdb2..479902a 100644 --- a/.helloagents/modules/deploy.md +++ b/.helloagents/modules/deploy.md @@ -15,7 +15,7 @@ - `.env.example` 同时覆盖 Docker Compose 变量和 Laravel 运行变量,但不得包含真实 `APP_KEY`、数据库密码、邮箱密码或真实业务域名 - `scripts/init.sh` 只创建挂载目录并在 `.env` 不存在时复制模板,不执行数据库迁移 - `scripts/deploy.sh` 只负责初始化、拉取镜像和启动服务,不自动执行生产数据库迁移 -- `scripts/update.sh --migrate` 才会显式执行 `php artisan migrate --force` +- `scripts/update.sh` 执行 `docker compose pull`、`docker compose run -it --rm web php artisan xboard:update`、`docker compose up -d`;非交互终端会自动去掉 `-it` - `scripts/status.sh` 输出 compose 状态、scheduler 日志、`schedule:list` 结果和手动墙检测同步命令 ## 依赖关系 diff --git a/deploy/xboard-server/README.md b/deploy/xboard-server/README.md index 21b0e78..ae128a6 100644 --- a/deploy/xboard-server/README.md +++ b/deploy/xboard-server/README.md @@ -59,16 +59,18 @@ docker compose exec -T web php artisan xboard:update docker compose up -d ``` -更新镜像但不自动迁移数据库: +更新镜像并执行项目更新流程: ```sh sh ./scripts/update.sh ``` -更新镜像并显式执行数据库迁移: +该脚本在交互终端中的等价命令: ```sh -sh ./scripts/update.sh --migrate +docker compose pull +docker compose run -it --rm web php artisan xboard:update +docker compose up -d ``` 查看服务状态: diff --git a/deploy/xboard-server/compose.test.yaml b/deploy/xboard-server/compose.test.yaml new file mode 100644 index 0000000..c155250 --- /dev/null +++ b/deploy/xboard-server/compose.test.yaml @@ -0,0 +1,71 @@ +services: + web: + image: ${XBOARD_IMAGE:-ghcr.io/micah123321/xboard:new} + restart: on-failure + depends_on: + - redis + command: php artisan octane:start --host=0.0.0.0 --port=7001 + environment: + docker: "true" + ports: + - "${WEB_PORT:-7001}:7001" + volumes: &xboard-volumes + - redis-data:/data + - ./.env:/www/.env + - ./.docker/.data/:/www/.docker/.data + - ./storage/logs:/www/storage/logs + - ./storage/theme:/www/storage/theme + - ./plugins:/www/plugins + + horizon: + image: ${XBOARD_IMAGE:-ghcr.io/micah123321/xboard:new} + restart: on-failure + depends_on: + - redis + command: php artisan horizon + environment: + docker: "true" + volumes: *xboard-volumes + + scheduler: + image: ${XBOARD_IMAGE:-ghcr.io/micah123321/xboard:new} + restart: unless-stopped + depends_on: + - redis + command: php artisan schedule:work + environment: + docker: "true" + volumes: *xboard-volumes + + admin: + image: ${XBOARD_ADMIN_IMAGE:-ghcr.io/micah123321/xboard-admin-frontend:new} + restart: unless-stopped + depends_on: + - web + environment: + XBOARD_BACKEND_UPSTREAM: ${XBOARD_BACKEND_UPSTREAM:-http://web:7001} + XBOARD_UPLOAD_UPSTREAM: ${XBOARD_UPLOAD_UPSTREAM:-https://pic.535888.xyz} + ports: + - "${ADMIN_PORT:-7002}:80" + + ws-server: + image: ${XBOARD_IMAGE:-ghcr.io/micah123321/xboard:new} + restart: on-failure + depends_on: + - redis + command: php artisan ws-server start + environment: + docker: "true" + ports: + - "${WS_PORT:-8076}:8076" + volumes: *xboard-volumes + + redis: + image: ${REDIS_IMAGE:-redis:8-alpine} + restart: unless-stopped + command: redis-server --unixsocket /data/redis.sock --unixsocketperm 777 --save 900 1 --save 300 10 --save 60 10000 + volumes: + - redis-data:/data + +volumes: + redis-data: diff --git a/deploy/xboard-server/scripts/update.sh b/deploy/xboard-server/scripts/update.sh index 5907f66..d85ba7f 100644 --- a/deploy/xboard-server/scripts/update.sh +++ b/deploy/xboard-server/scripts/update.sh @@ -3,21 +3,16 @@ set -eu cd "$(dirname "$0")/.." -run_migrate=false - for arg in "$@"; do case "$arg" in - --migrate) - run_migrate=true - ;; -h|--help) - echo "Usage: sh ./scripts/update.sh [--migrate]" - echo " --migrate Run 'php artisan migrate --force' after containers are updated." + echo "Usage: sh ./scripts/update.sh" + echo "Runs: docker compose pull && docker compose run -it --rm web php artisan xboard:update && docker compose up -d" exit 0 ;; *) echo "Unknown option: $arg" - echo "Usage: sh ./scripts/update.sh [--migrate]" + echo "Usage: sh ./scripts/update.sh" exit 1 ;; esac @@ -34,12 +29,17 @@ if ! docker compose version >/dev/null 2>&1; then fi docker compose pull -docker compose up -d -if [ "$run_migrate" = "true" ]; then - docker compose exec -T web php artisan migrate --force -else - echo "Migration skipped. Re-run with --migrate when the release requires database migrations." +run_tty_args="-it" +if [ ! -t 0 ] || [ ! -t 1 ]; then + run_tty_args="" fi +if [ -n "$run_tty_args" ]; then + docker compose run -it --rm web php artisan xboard:update +else + docker compose run --rm web php artisan xboard:update +fi + +docker compose up -d docker compose ps