92 lines
2.3 KiB
Bash
92 lines
2.3 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
# 检查Docker是否运行的函数
|
|||
|
is_docker_running() {
|
|||
|
if ! docker info >/dev/null 2>&1; then
|
|||
|
return 1 # Docker未运行
|
|||
|
else
|
|||
|
return 0 # Docker正在运行
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
mkdir bin output
|
|||
|
|
|||
|
export GOBIN=$(pwd)/bin
|
|||
|
|
|||
|
# 1. 检查并安装Docker(如果不存在)
|
|||
|
if ! command -v docker &> /dev/null; then
|
|||
|
echo "未检测到Docker,正在尝试安装..."
|
|||
|
|
|||
|
# 使用官方脚本安装Docker
|
|||
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|||
|
sudo sh get-docker.sh
|
|||
|
rm get-docker.sh
|
|||
|
|
|||
|
# 验证安装
|
|||
|
if ! command -v docker &> /dev/null; then
|
|||
|
echo "Docker安装失败"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# 将当前用户加入docker组(可能需要重新登录)
|
|||
|
sudo usermod -aG docker $USER
|
|||
|
echo "Docker安装成功。您可能需要注销并重新登录使更改生效。"
|
|||
|
else
|
|||
|
echo "Docker已安装"
|
|||
|
fi
|
|||
|
|
|||
|
# 2. 安装最新版goctl
|
|||
|
go install ../../..
|
|||
|
if [ $? -ne 0 ]; then
|
|||
|
echo "goctl安装失败"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
echo "goctl 安装成功"
|
|||
|
|
|||
|
# 3. 生成swagger文件
|
|||
|
echo "正在生成swagger文件..."
|
|||
|
./bin/goctl api swagger --api example_cn.api --dir output
|
|||
|
if [ $? -ne 0 ]; then
|
|||
|
echo "swagger文件生成失败"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# 检查Docker是否运行
|
|||
|
if ! is_docker_running; then
|
|||
|
echo "Docker未运行,请先启动Docker服务"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# 4. 清理现有的swagger-ui容器
|
|||
|
echo "正在清理现有的swagger-ui容器..."
|
|||
|
docker rm -f swagger-ui 2>/dev/null && echo "已移除现有的swagger-ui容器"
|
|||
|
|
|||
|
# 5. 在Docker中运行swagger-ui
|
|||
|
echo "正在启动swagger-ui容器..."
|
|||
|
docker run -d --name swagger-ui -p 8080:8080 \
|
|||
|
-e SWAGGER_JSON=/tmp/example.json \
|
|||
|
-v $(pwd)/output/example_cn.json:/tmp/example.json \
|
|||
|
swaggerapi/swagger-ui
|
|||
|
|
|||
|
if [ $? -ne 0 ]; then
|
|||
|
echo "swagger-ui容器启动失败"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# 等待1秒确保服务就绪
|
|||
|
echo "等待swagger-ui初始化..."
|
|||
|
sleep 1
|
|||
|
|
|||
|
# 显示访问信息并尝试打开浏览器
|
|||
|
SWAGGER_URL="http://localhost:8080"
|
|||
|
echo -e "\nSwagger UI 已准备就绪,访问地址: \033[1;34m${SWAGGER_URL}\033[0m"
|
|||
|
echo "正在尝试在默认浏览器中打开..."
|
|||
|
|
|||
|
# 跨平台打开浏览器
|
|||
|
case "$(uname -s)" in
|
|||
|
Linux*) xdg-open "$SWAGGER_URL";;
|
|||
|
Darwin*) open "$SWAGGER_URL";;
|
|||
|
CYGWIN*|MINGW*|MSYS*) start "$SWAGGER_URL";;
|
|||
|
*) echo "无法在当前操作系统自动打开浏览器";;
|
|||
|
esac
|