fix(deploy): 调整 xboard 更新脚本执行流程
更新脚本改为先拉取镜像,再通过一次性 web 容器执行 xboard:update,最后重新启动服务 移除 --migrate 参数并补充非交互终端下的执行说明, 同时更新 README、部署模块文档并新增测试 compose 配置
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# CHANGELOG
|
# 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
|
## [0.6.6] - 2026-04-28
|
||||||
|
|
||||||
### 新增
|
### 新增
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
- `.env.example` 同时覆盖 Docker Compose 变量和 Laravel 运行变量,但不得包含真实 `APP_KEY`、数据库密码、邮箱密码或真实业务域名
|
- `.env.example` 同时覆盖 Docker Compose 变量和 Laravel 运行变量,但不得包含真实 `APP_KEY`、数据库密码、邮箱密码或真实业务域名
|
||||||
- `scripts/init.sh` 只创建挂载目录并在 `.env` 不存在时复制模板,不执行数据库迁移
|
- `scripts/init.sh` 只创建挂载目录并在 `.env` 不存在时复制模板,不执行数据库迁移
|
||||||
- `scripts/deploy.sh` 只负责初始化、拉取镜像和启动服务,不自动执行生产数据库迁移
|
- `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` 结果和手动墙检测同步命令
|
- `scripts/status.sh` 输出 compose 状态、scheduler 日志、`schedule:list` 结果和手动墙检测同步命令
|
||||||
|
|
||||||
## 依赖关系
|
## 依赖关系
|
||||||
|
|||||||
@@ -59,16 +59,18 @@ docker compose exec -T web php artisan xboard:update
|
|||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
更新镜像但不自动迁移数据库:
|
更新镜像并执行项目更新流程:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sh ./scripts/update.sh
|
sh ./scripts/update.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
更新镜像并显式执行数据库迁移:
|
该脚本在交互终端中的等价命令:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sh ./scripts/update.sh --migrate
|
docker compose pull
|
||||||
|
docker compose run -it --rm web php artisan xboard:update
|
||||||
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
查看服务状态:
|
查看服务状态:
|
||||||
|
|||||||
@@ -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:
|
||||||
@@ -3,21 +3,16 @@ set -eu
|
|||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
run_migrate=false
|
|
||||||
|
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
--migrate)
|
|
||||||
run_migrate=true
|
|
||||||
;;
|
|
||||||
-h|--help)
|
-h|--help)
|
||||||
echo "Usage: sh ./scripts/update.sh [--migrate]"
|
echo "Usage: sh ./scripts/update.sh"
|
||||||
echo " --migrate Run 'php artisan migrate --force' after containers are updated."
|
echo "Runs: docker compose pull && docker compose run -it --rm web php artisan xboard:update && docker compose up -d"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown option: $arg"
|
echo "Unknown option: $arg"
|
||||||
echo "Usage: sh ./scripts/update.sh [--migrate]"
|
echo "Usage: sh ./scripts/update.sh"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -34,12 +29,17 @@ if ! docker compose version >/dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
docker compose pull
|
docker compose pull
|
||||||
docker compose up -d
|
|
||||||
|
|
||||||
if [ "$run_migrate" = "true" ]; then
|
run_tty_args="-it"
|
||||||
docker compose exec -T web php artisan migrate --force
|
if [ ! -t 0 ] || [ ! -t 1 ]; then
|
||||||
else
|
run_tty_args=""
|
||||||
echo "Migration skipped. Re-run with --migrate when the release requires database migrations."
|
|
||||||
fi
|
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
|
docker compose ps
|
||||||
|
|||||||
Reference in New Issue
Block a user