feat: 优化部署流程和数据库迁移

- 更新 GitHub Actions 工作流,调整部署步骤,先启动数据库服务以确保迁移顺利进行。
- 新增启动所有服务的步骤,确保在迁移完成后启动全部服务。
- 在 SQL 脚本中添加锁定超时设置,提升数据库操作的稳定性。
This commit is contained in:
penghanyuan
2026-03-01 11:12:04 +01:00
parent 50831003c7
commit 4a331428f7
2 changed files with 36 additions and 17 deletions

View File

@@ -168,7 +168,7 @@ jobs:
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/.env.prod
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/.env.production
# 第三步:在远程服务器上执行部署操作
# 第三步:准备镜像和配置
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
set -e
cd $COMPOSE_DIR/api
@@ -179,27 +179,15 @@ jobs:
echo '备份并更新 docker-compose.yml 中的镜像标签...'
cp '$COMPOSE_FILE' '${COMPOSE_FILE}.bak'
# 更新所有包含 lifecho-api 或 life-echo-api 的 image 行
sed -i.tmp 's|image:.*lifecho-api.*|image: $IMAGE_TAG|g' '$COMPOSE_FILE'
sed -i.tmp 's|image:.*life-echo-api.*|image: $IMAGE_TAG|g' '$COMPOSE_FILE'
# 清理临时文件
rm -f '${COMPOSE_FILE}.tmp' 2>/dev/null || true
echo '启动新容器...'
docker-compose -f '$COMPOSE_FILE' pull || true
docker-compose -f '$COMPOSE_FILE' up -d
echo '先只启动数据库(确保迁移不受 API 连接干扰)...'
docker-compose -f '$COMPOSE_FILE' up -d postgres redis
echo '等待容器启动...'
sleep 15
echo '清理旧镜像...'
docker image prune -f || true
echo '部署完成!'
echo '检查容器状态...'
docker-compose -f '$COMPOSE_FILE' ps
echo '等待数据库就绪...'
sleep 10
"
- name: Run database migration
@@ -230,8 +218,37 @@ jobs:
"docker exec -i life-echo-postgres psql -U $DB_USER -d $DB_NAME" \
< api/migrations/add_user_profile_fields.sql
echo "修正章节排序索引 v2..."
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST \
"docker exec -i life-echo-postgres psql -U $DB_USER -d $DB_NAME" \
< api/migrations/fix_chapter_order_index_v2.sql
echo "数据库迁移完成"
- name: Start all services
env:
SSH_USER: ${{ secrets.SSH_USER }}
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT || 22 }}
COMPOSE_DIR: ${{ secrets.DEPLOY_PATH || '/opt/life-echo' }}
COMPOSE_FILE: docker-compose.yml
run: |
echo "迁移完成,启动全部服务..."
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
set -e
cd $COMPOSE_DIR/api
docker-compose -f '$COMPOSE_FILE' up -d
echo '等待服务启动...'
sleep 15
echo '清理旧镜像...'
docker image prune -f || true
echo '部署完成!'
docker-compose -f '$COMPOSE_FILE' ps
"
- name: Verify deployment
env:
SSH_USER: ${{ secrets.SSH_USER }}

View File

@@ -1,5 +1,7 @@
-- 添加用户基础资料字段(出生年份、出生地、成长地、职业)
SET lock_timeout = '5s';
ALTER TABLE users ADD COLUMN IF NOT EXISTS birth_year INTEGER;
ALTER TABLE users ADD COLUMN IF NOT EXISTS birth_place VARCHAR;
ALTER TABLE users ADD COLUMN IF NOT EXISTS grew_up_place VARCHAR;
ALTER TABLE users ADD COLUMN IF NOT EXISTS occupation VARCHAR;
RESET lock_timeout;