feat: 优化部署流程和数据库迁移
- 更新 GitHub Actions 工作流,调整部署步骤,先启动数据库服务以确保迁移顺利进行。 - 新增启动所有服务的步骤,确保在迁移完成后启动全部服务。 - 在 SQL 脚本中添加锁定超时设置,提升数据库操作的稳定性。
This commit is contained in:
51
.github/workflows/docker-build-deploy.yml
vendored
51
.github/workflows/docker-build-deploy.yml
vendored
@@ -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.prod
|
||||||
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/.env.production
|
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/.env.production
|
||||||
|
|
||||||
# 第三步:在远程服务器上执行部署操作
|
# 第三步:准备镜像和配置
|
||||||
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
|
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
|
||||||
set -e
|
set -e
|
||||||
cd $COMPOSE_DIR/api
|
cd $COMPOSE_DIR/api
|
||||||
@@ -179,27 +179,15 @@ jobs:
|
|||||||
echo '备份并更新 docker-compose.yml 中的镜像标签...'
|
echo '备份并更新 docker-compose.yml 中的镜像标签...'
|
||||||
cp '$COMPOSE_FILE' '${COMPOSE_FILE}.bak'
|
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:.*lifecho-api.*|image: $IMAGE_TAG|g' '$COMPOSE_FILE'
|
||||||
sed -i.tmp 's|image:.*life-echo-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
|
rm -f '${COMPOSE_FILE}.tmp' 2>/dev/null || true
|
||||||
|
|
||||||
echo '启动新容器...'
|
echo '先只启动数据库(确保迁移不受 API 连接干扰)...'
|
||||||
docker-compose -f '$COMPOSE_FILE' pull || true
|
docker-compose -f '$COMPOSE_FILE' up -d postgres redis
|
||||||
docker-compose -f '$COMPOSE_FILE' up -d
|
|
||||||
|
|
||||||
echo '等待容器启动...'
|
echo '等待数据库就绪...'
|
||||||
sleep 15
|
sleep 10
|
||||||
|
|
||||||
echo '清理旧镜像...'
|
|
||||||
docker image prune -f || true
|
|
||||||
|
|
||||||
echo '部署完成!'
|
|
||||||
|
|
||||||
echo '检查容器状态...'
|
|
||||||
docker-compose -f '$COMPOSE_FILE' ps
|
|
||||||
"
|
"
|
||||||
|
|
||||||
- name: Run database migration
|
- name: Run database migration
|
||||||
@@ -230,8 +218,37 @@ jobs:
|
|||||||
"docker exec -i life-echo-postgres psql -U $DB_USER -d $DB_NAME" \
|
"docker exec -i life-echo-postgres psql -U $DB_USER -d $DB_NAME" \
|
||||||
< api/migrations/add_user_profile_fields.sql
|
< 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 "数据库迁移完成"
|
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
|
- name: Verify deployment
|
||||||
env:
|
env:
|
||||||
SSH_USER: ${{ secrets.SSH_USER }}
|
SSH_USER: ${{ secrets.SSH_USER }}
|
||||||
|
|||||||
@@ -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_year INTEGER;
|
||||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS birth_place VARCHAR;
|
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 grew_up_place VARCHAR;
|
||||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS occupation VARCHAR;
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS occupation VARCHAR;
|
||||||
|
RESET lock_timeout;
|
||||||
|
|||||||
Reference in New Issue
Block a user