debian

Debian Swagger在容器化部署中的应用

小樊
51
2025-10-12 08:04:33
栏目: 智能运维

Debian环境下Swagger容器化部署实践指南
在Debian系统中,通过Docker容器化部署Swagger(如Swagger UI、Swagger Editor),可实现API文档的快速交付、环境一致性及便捷管理。以下是具体应用场景与操作步骤:

一、基础容器化部署:快速启动Swagger UI

1. 安装Docker

首先在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的安装与启动。

2. 拉取并运行Swagger UI官方镜像

使用Docker Hub上的官方swaggerapi/swagger-ui镜像,快速启动Swagger UI容器。将本地的Swagger规范文件(如swagger.jsonswagger.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镜像

若需要更灵活的配置(如修改Swagger UI样式、添加认证),可通过编写Dockerfile构建专属镜像。

1. 准备Swagger配置文件

创建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

2. 编写Dockerfile

创建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"]

3. 编写服务器代码

创建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}`);
});

4. 构建并运行自定义镜像

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管理多个容器。

1. 安装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

2. 编写docker-compose.yml

创建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配置文件。

3. 启动集群

执行以下命令启动所有服务:

docker-compose up -d

访问http://<Debian主机IP>:8081http://<Debian主机IP>:8082,即可分别查看两个Swagger UI实例。

四、注意事项

0
看了该问题的人还看了