写在前面
作为刚入门运维的一员,接到了一个任务,在docker中部署swagger。对于swagger自己进行后端开发的时候也是接触到了,那会对于他的理解是可以用来管理接口,我们写的方法都会在swagger中显示出来,我们也可以在swagger上进行测试。接到这个任务的时候,我想也是我要对他的理解再进一点的时候了。
官网的解释:Swagger是面向OpenAPI规范(OAS)的API开发人员工具的世界上最大的框架,可以在整个API生命周期中进行开发,从设计和文档到测试和部署。
自己理解:我们开发的契约,当前端和后端分离的时候,我们依据swagger上提供的api进行开发,我们共同遵循这同一个契约。利用在线的swagger我们只需要一个json文件,或xml文件加上swagger自己封装的接口我们就可以模拟真实的功能。
why?为什么要本地部署呢?最近做项目网络总是不给力,一个页面要加载好长时间,于是我们项目组长先发制人要大家本地的swagger。
- 运行docker容器的服务器
下载所需要的镜像,这些不是必要的操作,方便我们之后的查看。
docker pull swaggerapi/swagger-ui docker pull swaggerapi/swagger-editor
在这个文件夹下我们会看到一个dockerfile的文件,我们的镜像也是通过dockerfile来构建的。下面对dockerfile的内容进行简单的说明如下:
FROM alpine:3.5 MAINTAINER fehguy ENV VERSION "v2.2.10" ENV FOLDER "swagger-ui-2.2.10" ENV API_URL "http://petstore.swagger.io/v2/swagger.json" ENV API_KEY "**None**" ENV OAUTH_CLIENT_ID "**None**" ENV OAUTH_CLIENT_SECRET "**None**" ENV OAUTH_REALM "**None**" ENV OAUTH_APP_NAME "**None**" ENV OAUTH_ADDITIONAL_PARAMS "**None**" ENV SWAGGER_JSON "/app/swagger.json" ENV PORT 80 RUN apk add --update nginx RUN mkdir -p /run/nginx COPY nginx.conf /etc/nginx/ ADD ./dist/* /usr/share/nginx/html/ ADD ./docker-run.sh /usr/share/nginx/ EXPOSE 8080 CMD ["sh", "/usr/share/nginx/docker-run.sh"]
dockerfile中提到把dist文件复制到/usr/share/nginx/html/,这是为什么呢?我们看一下nginx的配置文件便会清楚很多了~
location / { root /usr/share/nginx/html; index index.html index.htm; }
进入到我们down下来的文件中,构建镜像;
docker build -t swagger-ui-builder .
镜像是只读的,静态的,我们要把镜像运行起来才可操作,如何运行起来呢,着就要说道容器了,我们run 一个镜像的容器,便可以读写了,当然我们操作的结果并不会对镜像改变什么,我们变动是容器,我们可以这样理解:容器=镜像+可读写层。以下是启动命令:
docker run --name=swagger-ui-bulder -p 8080:8080 -d 镜像ID
运维的一定要想到后续是如何维护的,不然只会增加工作难度和时间,日后修改json文件,我们将更新后的文件放到dist下面,同时更新dockerfile的URL,最后重新构建镜像。
在浏览器中输入ip地址就可以访问了,如下图:
这块目前有一个遗留问题,我们本地搭起来swagger框架,可以查看api,但是根据path访问某个方法是还是不通,我想这里是用到了反射,这只是猜想,接下来就是去验证了,还是要不断修炼和研究。
遇到问题,解决问题。相信我们的办法总比困难多啊,加油~
原文链接:https://blog.csdn.net/SweetyoYY/article/details/78388524?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836884016800182130287%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836884016800182130287&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-20-78388524-null-null.nonecase&utm_term=docker%E9%83%A8%E7%BD%B2