49 lines
1.1 KiB
Bash
Executable File
49 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# 定义变量
|
|
IMAGE_NAME="excel2pic"
|
|
CONTAINER_NAME="excel2pic_container"
|
|
PORT=8000
|
|
|
|
echo "开始部署 $IMAGE_NAME ..."
|
|
|
|
# 0. 拉取最新代码
|
|
if [ -d ".git" ]; then
|
|
echo "正在拉取最新代码..."
|
|
git pull
|
|
else
|
|
echo "警告: 当前不是 Git 仓库,跳过代码拉取。"
|
|
fi
|
|
|
|
# 1. 构建 Docker 镜像
|
|
echo "构建 Docker 镜像..."
|
|
docker build -t $IMAGE_NAME:latest .
|
|
|
|
# 2. 检查并停止旧容器
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|
echo "停止并移除旧容器..."
|
|
docker stop $CONTAINER_NAME || true
|
|
docker rm $CONTAINER_NAME || true
|
|
fi
|
|
|
|
# 3. 启动新容器
|
|
echo "启动新容器..."
|
|
docker run -d \
|
|
--name $CONTAINER_NAME \
|
|
-p $PORT:8000 \
|
|
$IMAGE_NAME:latest
|
|
|
|
# 4. 验证部署
|
|
echo "等待服务启动..."
|
|
sleep 2
|
|
if docker ps | grep -q $CONTAINER_NAME; then
|
|
echo "部署成功!"
|
|
echo "API 文档地址: http://localhost:$PORT/docs"
|
|
echo "测试转换接口: POST http://localhost:$PORT/api/v1/convert"
|
|
else
|
|
echo "部署失败,容器未运行。"
|
|
docker logs $CONTAINER_NAME
|
|
exit 1
|
|
fi
|