更新
This commit is contained in:
34
.github/workflows/docker-build-deploy.yml
vendored
34
.github/workflows/docker-build-deploy.yml
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user