Docker初学到实战(六)搭建WebApi-后端
我后端开发是用的C#语言.net5版本,开发工具用的VS,我主要是开发了一个把长链接转换为短链接的项目,总共就2个API,具体WebApi怎么开发,大家另起一个课程吧,我这里就放几个截图看看吧:
如上就是我们开发好的一个完整的API项目,那么问题来了,我们如何把这个项目部署到Docker容器中呢?
如果是传统的windows服务器,我们只需要把这个项目生成一个EXE的文件,把相关的文件全部拷贝到服务器上,运行起来就行了,当然在代码中还得指定访问端口。
但是现在我们要放到Docker里面,启动一个Docker容器时需要一个镜像的,所以我们这里得把这个WebApi项目打包成镜像。
以目前我们的开发环境和目的来看,我就一个人,用自己的电脑开发的,不涉及多人开发,自动发布,我自己手动发不就行了。咱先学会一中方法,以后再自行去扩展CICD,自动化发布和测试。所以我们这里发布的流程就是可以有几种:
1.在本地开发电脑上把项目打包成Docker镜像→上传到Docker镜像仓库→在服务器上拉取镜像并启动。
2.把本地项目的源代码拷贝到服务器→在服务器上打包成Docker镜像→以该镜像启动容器。
第二种比较麻烦,还可把源代码复制到服务器,又是Linux的服务器复制文件也麻烦,操作全是命令,一点不方便,但是这个方式是比较适合做自动发布的。
所以我们这里选择第一种方式:
一、打包镜像
1.首选要下载一个DockerDesktop(
补充一下:如果你的服务器是Windwos的,你也可以用这个DockerDesktop来启动和管理容器,就不用我前面几章说的哪些东西了。
记得注册一个DockerHub的账号,然后登陆,方便我们上传镜像到DockerHub的公共镜像仓库。
2.在VS中,选择项目右键→添加→选择Docker支持
在选择目标OS:我们的服务器是Linux
点击确定后会在目录下生成一个Dockerfile的文件,里面有段代码是指定端口的,大家可以不用纠结,最后面我会补充到,里面的内容建议大家可以另起一个课程学习。
重点注意:
建立项目是一定要把下图这个复选框选上,如果不选上,那么在自动生成dockerfile的时候会出行路径问题,需要自己去手动改路径,具体修改方式自己根据后面生成镜像时的报错多试试。
3.在开发者PowerShell中我们就可以使用Docker命令生成镜像了。
执行命令: docker build -t qq418181574/tinyurl-api:v1.5 .
最后这个“空格”和“点”,这个点表示的意思是以当前目录下的dockerfile文件为依据生成镜像。生成镜像的代码还有跟多扩展的知识,大家可以度娘,比如那个点可以是一个路径。
如果生成途中报错了回有提示,根据提示处理就行,以我们目前操作的手法,大部分问题就是路径问题,什么复制文件找不到路径之类的。
4.生成镜像成功后,我们到docker desktop上面去看看
上图就是现在我们本地的Docker镜像列表。
二、上传镜像
1.把本地镜像推送到DockerHub上,当然是当前登录账上:
注意,如下图,当前登录帐号就是在打包镜像时候取名字时的那个帐号,不然会推不上去,这个好像是DockerHub的一个规范,镜像前面都是帐号名称,这个点我还没弄得很明白,保持一致就一致吧,目前没啥影响我的。
2.推送完成之后可以切换选项卡查看是否成功,如下图:
我这里就是同一个项目,同一个镜像名字,推送了很多次,只是每次的Tag(版本)不一样。
3.当然也可以通过登录
三、拉取镜像启动容器
拉取镜像可以在服务器上用命令,也可以在我们之前安装的portainer容器管理上来操作,我这图方便就用portainer来操作,有可视化的交互界面为啥不用呢,哈哈
接下来的操作就跟前面几章介绍的安装mysql是一样的,我就放几个截图,然后圈一下聚焦点:
直接添加一个容器,镜像填写我们自己刚刚生成的 ,会自动拉取的。
最后查看是否启动正常:
最后我们同样的要在物理机上开放对应端口:
至此我们自己写的项目就打包并且启动完成了。可以使用postman或者访问api的swagger页面进行测试:
补充:关于端口的问题,我们的项目里面指定不指定都无所谓,我两个项目没有指定端口,就是默认的80,然后在容器中启动后拿物理机的响应的端口对应80就行了,我是觉得这样方便,就如下图:
这两个项目就是我的前后端,我在项目里面都没指定端口,就用默认80,在启动容器时再确定用物理机上哪个端口来对应。81:80表示物理机上的81对应容器中的80。每个容器都有自己的端口,所以不冲突。
dockerfile中指定的端口我还没发现有什么用,这个自动生成的文件,没用也可以删掉这段。























浙公网安备 33010602011771号