This commit is contained in:
iammm0
2026-01-28 16:15:57 +08:00
parent 967e37e519
commit f516ff1187

View File

@@ -123,14 +123,30 @@ jobs:
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST \
"mkdir -p $COMPOSE_DIR/api"
# 复制 docker-compose.yml 到远程服务器
# 第一步:先停止并删除旧容器(使用服务器上现有的 docker-compose.yml
echo "停止并删除旧容器..."
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
cd $COMPOSE_DIR/api 2>/dev/null || exit 0
if [ -f '$COMPOSE_FILE' ]; then
echo '使用旧配置停止容器...'
docker-compose -f '$COMPOSE_FILE' down --remove-orphans || true
fi
# 清理可能残留的容器
echo '清理残留容器...'
docker stop life-echo-api-prod life-echo-celery-worker life-echo-postgres life-echo-redis 2>/dev/null || true
docker rm -f life-echo-api-prod life-echo-celery-worker life-echo-postgres life-echo-redis 2>/dev/null || true
"
# 第二步:复制新的配置文件到远程服务器
echo "复制配置文件..."
scp -P $SSH_PORT ./api/$COMPOSE_FILE $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/
# 复制 .env.production 到远程服务器
# 复制 .env.production 到远程服务器(重命名为 .env.prod
echo "复制 .env.production 文件..."
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/
scp -P $SSH_PORT ./api/.env.production $SSH_USER@$SSH_HOST:$COMPOSE_DIR/api/.env.prod
# 在远程服务器上执行部署操作
# 第三步:在远程服务器上执行部署操作
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
set -e
cd $COMPOSE_DIR/api
@@ -138,22 +154,22 @@ jobs:
echo '拉取最新镜像: $IMAGE_TAG'
docker pull '$IMAGE_TAG' || true
echo '停止现有容器...'
docker-compose -f '$COMPOSE_FILE' down || true
echo '更新 docker-compose.yml 中的镜像标签...'
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 '等待容器启动...'
sleep 10
sleep 15
echo '清理旧镜像...'
docker image prune -f || true