如何在Docker Compose部署的Swagger-UI中配置启用requestSnippets
解决Docker Compose部署Swagger-UI启用requestSnippets的配置问题
你当前的配置存在几个关键问题,以下是具体修正方案:
1. 让Swagger UI加载自定义配置文件
你的docker-compose.yml已挂载配置文件,但Swagger UI默认不会自动读取该路径的文件,必须通过SWAGGER_CONFIG_URL环境变量指定配置文件位置:
修正后的docker-compose.yml:
--- version: '3.8' services: swagger: image: swaggerapi/swagger-ui:latest container_name: swagger environment: # 注意:若后端服务在同一Docker Compose网络内,将localhost替换为后端服务名称 SWAGGER_JSON_URL: "http://<你的宿主机IP>:8083/services/rest/swagger.json" # 新增该变量,指定自定义配置文件的访问路径 SWAGGER_CONFIG_URL: "/swagger-config.yaml" ports: - "9091:8080" volumes: - ./swagger-config.yaml:/usr/share/nginx/html/swagger-config.yaml
2. 修正自定义配置文件的语法错误
你的swagger-config.yaml存在多处问题:
- 重复定义
requestSnippetsEnabled和requestSnippets(正确配置requestSnippets节点即可启用该功能) - 混用YAML与JSON结构,容易引发解析失败
curl_cmd的syntax被错误设置为bash,应改为cmd- JSON结构中的多余逗号可能导致解析异常
修正后的swagger-config.yaml:
--- requestSnippets: generators: curl_bash: title: "cURL (bash)" syntax: "bash" curl_powershell: title: "cURL (PowerShell)" syntax: "powershell" curl_cmd: title: "cURL (CMD)" syntax: "cmd" defaultExpanded: true languages: ["curl_bash", "curl_powershell", "curl_cmd"]
额外注意事项
- 若后端服务也通过Docker Compose部署,
SWAGGER_JSON_URL中的localhost需替换为后端服务名称(比如后端服务名为backend,则写http://backend:8083/services/rest/swagger.json),因为容器内部的localhost指向自身,无法直接访问宿主机服务。 - 修改配置后,重启容器生效:
docker-compose down && docker-compose up -d
内容的提问来源于stack exchange,提问作者Dark Star1
相关产品推荐
相关产品推荐

