Debian環境下Swagger容器化部署實踐指南
在Debian系統中,通過Docker容器化部署Swagger(如Swagger UI、Swagger Editor),可實現API文檔的快速交付、環境一致性及便捷管理。以下是具體應用場景與操作步驟:
首先在Debian系統上安裝Docker,確保后續能運行容器化服務。執行以下命令:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
上述步驟完成了Docker的安裝與啟動。
使用Docker Hub上的官方swaggerapi/swagger-ui鏡像,快速啟動Swagger UI容器。將本地的Swagger規范文件(如swagger.json或swagger.yaml)掛載到容器中,實現文檔的自定義:
# 拉取官方鏡像
docker pull swaggerapi/swagger-ui
# 運行容器(掛載本地Swagger文件到容器內指定路徑)
docker run -d -p 8080:80 -v /path/to/your/swagger.json:/usr/src/app/swagger.json swaggerapi/swagger-ui
訪問http://<Debian主機IP>:8080/swagger-ui/index.html,即可看到基于本地規范的Swagger UI界面。
若需要更靈活的配置(如修改Swagger UI樣式、添加認證),可通過編寫Dockerfile構建專屬鏡像。
創建swagger.yaml(或swagger.json),定義API接口信息。例如:
swagger: '2.0'
info:
title: Sample API
description: A demo API for Swagger containerization
version: '1.0.0'
paths:
/hello:
get:
summary: Returns a greeting
responses:
'200':
description: A successful response
schema:
type: string
創建Dockerfile,基于官方Node.js鏡像構建(支持Swagger UI Express):
# 基礎鏡像(使用Node.js 14)
FROM node:14
# 設置工作目錄
WORKDIR /usr/src/app
# 復制Swagger配置文件
COPY swagger.yaml .
# 安裝Swagger UI Express依賴
RUN npm install swagger-ui-express yamljs express
# 復制服務器代碼(見下一步)
COPY server.js .
# 暴露端口
EXPOSE 3000
# 啟動服務器
CMD ["node", "server.js"]
創建server.js,用于提供Swagger UI服務:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
// 加載Swagger配置文件
const swaggerDocument = YAML.load('./swagger.yaml');
const app = express();
// 配置Swagger UI中間件(掛載到/api-docs路徑)
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
// 啟動服務器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Swagger UI running on port ${PORT}`);
});
在Dockerfile所在目錄執行以下命令:
# 構建鏡像(標簽為swagger-ui-custom)
docker build -t swagger-ui-custom .
# 運行容器(映射端口3000)
docker run -d -p 3000:3000 swagger-ui-custom
訪問http://<Debian主機IP>:3000/api-docs,即可看到自定義的Swagger UI界面。
若需要部署多個Swagger UI實例(如高可用、多環境),可使用Docker Compose管理多個容器。
在Debian系統上安裝Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
創建docker-compose.yml,定義多個Swagger UI服務:
version: '3'
services:
swagger-ui-1:
image: swaggerapi/swagger-ui
ports:
- "8081:80"
volumes:
- ./swagger-1.json:/usr/src/app/swagger.json
swagger-ui-2:
image: swaggerapi/swagger-ui
ports:
- "8082:80"
volumes:
- ./swagger-2.json:/usr/src/app/swagger.json
上述配置啟動了兩個Swagger UI實例,分別映射到主機的8081和8082端口,并掛載不同的Swagger配置文件。
執行以下命令啟動所有服務:
docker-compose up -d
訪問http://<Debian主機IP>:8081和http://<Debian主機IP>:8082,即可分別查看兩個Swagger UI實例。
sudo或添加用戶到docker組)。--network參數或Docker Compose的networks配置)。--tls參數配置)。swaggerapi/swagger-ui:v3.52.5),避免因版本差異導致功能異常。