上回书搭建加了一个由3台服务器和两台开发机组成的模拟开发部署环境。接下来就是要在这个环境中进行模拟的开发和部署了。
如何开啊部署呢,先设想一下实际的应用场景。如下图所示:
浏览器通过域名访问web站点,为了web站点的高可用性和提高负载能力,可以使用各大云服务商都提供的负载均衡能力让一个域名对应几台web站点。这个过程用旧有的方案就可以胜任,只需要为这几个站点提供一个一致的身份认证就可以了。
再有就是web站点、手机app和小程序通过api网关访问各种微服务。这些微服务通过服务中心来管理,通过api网关提供调用服务。为了不让api网管成为一个单点故障,故需要多个api网关,多个api网关也通过dns解析的方式提供负载均衡服务。
创建待发现服务
新建项目
开始试验,先选定一个文件目录。在这个目录下创建一个文件夹servers用来存放服务。然后在该文件夹下创建3个文件夹,分别为server1、server2和server3。然后在这三个文件夹中分别创建一个webapi项目。在servers目录下执行如下命令:
dotnet new webapi -n server1
dotnet new webapi -n server2
dotnet new webapi -n server3
建立好的文件结构如下:
打开vscode,使用文件菜单下的【将文件夹添加到工作区】方式打开server1、server2和server3三个文件夹。
制作docker镜像
在vscode中打开命令面板,输入docker命令,选择Add Docker files to Workspace
选择文件夹Server1
选择项目类型为.Ner Core
选择监听的端口号3000:
在工作区标题上点击刷新按钮,就能看到新增的和docker相关的文件。
用这个步骤分别为server2和server3添加docker文件。
打开server1中的dockerfile看到以下内容:
FROM microsoft/aspnetcore:1
LABEL Name=server1 Version=0.0.1
ARG source=.
WORKDIR /app
EXPOSE 3000
COPY $source .
ENTRYPOINT dotnet server1.dll
其中的FROM和COPY要修改一下。
FROM改为:
FROM microsoft/aspnetcore:2.0
COPY改为:
COPY $source/bin/Debug/netcoreapp2.0/ .
server2和server3中的dockerfile中的EXPOSE一节也要修改为3001和3002表示监听的端口分别为3001和3002。修改后记得保存文件。
除此之外,每个项目的监听端口也都要修改一下,webapi默认的监听端口是5000,打开Program.cs文件,把几个项目的监听端口分别改为3000、3001和3002。要和dockfile中的EXPOSE值对应。
修改完成后在项目文件夹上右键,选择在终端中打开。然后在终端中输入命令dotnet build。build项目。
完成后再执行docker命令,build docker镜像。然后执行docker image list命令就能看到刚build好的镜像。
分别为三个项目执行如下命令:
dotnet build
docker build -t server1 . #其中server1为镜像标签,server2和server3项目要改成相应的标签名。
执行docker镜像
在vscode左侧边栏中的docker中的images中能看到本地有的docker镜像,从中可以看到刚刚build好的3个镜像,右键RUN把这几个镜像运行起来。
在inages下面的containers中能看到运行中的几个容器。在运行的容器上右键,Show Logs可以查看运行中的容器的日志信息。
可以看到服务已经运行了。接下来用浏览器来验证一下吧。
server1容器中,监听3000端口:
server2容器中,监听3001端口:
server3容器中,监听3002端口:
至此,待发现的服务建立完毕。