前言:
由于我们平时在开发微服务的时候,都是在windows 或者mac上开发的,开完完成一些功能,需要发布到服务器上进行提测。今天,我主要介绍两个工具来说明一下如何上传以及把程序跑起来。
正文:
准备工作:
1、Xftp 6工具 ,下载地址:https://www.netsarang.com/zh/xftp/
2、Xshell 6 工具,下载地址:https://www.netsarang.com/zh/xshell/
咱们先通过VS 2019创建一个webapi项目,等下好发布到CentOS服务器演示
创建完成之后,我就创建了一个UserController控制器,里面创建了一个User类,并且在构造函数中,初始化了一个私有用户列表对象数据,方便我们在调用接口的时候测试用。
准备工作完成,咱们就先来发包,等下使用工具上传到CentOS服务器上
最后执行“发布”即可。
使用Xftp连接服务器(192.168.217.129),这个服务器的搭建,我在前面几篇文章中已经搭建过了,这里就不再赘述了,如果有需要的伙伴,可以去《在VMWare上安装CentOS&Linux教程》查看一下。
第一次连接,可能会出现如下安全警告,我们选择“接收并保存”即可。
接下来,咱们通过Xftp工具。把刚才发布好的包上传到服务器的指定文件夹下(MicroService 文件夹是自己创建的)
下面是重点,仔细品
我们先准备两个文件(webapi.dockerfile 和 docker-compose.yml)
下面是webapi.dockerfile文件里面的详细内容:
# 基于.net core 3.1 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine # 将本地文件夹挂载到当前容器 VOLUME /tmp # 复制文件到容器 COPY ./webapi /app/ WORKDIR /app # 声明需要暴露的端口 EXPOSE 6666 # 配置容器启动后执行的命令 ENTRYPOINT ["dotnet", "yuyoho.WebApi.dll"]
.dockerfile 文件的一个详细说明,请移步至官网进行查阅其含义《Dockerfile解释》
下面是docker-compose.yml文件的详细内容:
version: "3.6" services: id-service: build: context: ./ dockerfile: webapi.dockerfile ports: - "6666:6666" environment: - ASPNETCORE_URLS=http://*:6666 - workid=1 - eureka:instance:ipAddress=192.168.217.129 - eureka:instance:port=6666 volumes: - ./log/webapi:/app/Log4net
有关docker-compose.yml 文件的讲解,我就不出系列文章了,有不明白的地方,请移步到《docker-compose.yml的使用》这里查看详细
到此,咱们就准备就绪了,接下来,咱们就开始使用Xshell工具,连接服务器进行启动微服务
咱们先切到对应目录
在这之前,咱们先安装一下docker-compose 命令
具体安装可以参考官方文档,也可以直接使用如下命令,都是从官网copy下来的。
[root@yuyoho MicroService]# sudo curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 638 100 638 0 0 438 0 0:00:01 0:00:01 --:--:-- 438 100 11.6M 100 11.6M 0 0 144k 0 0:01:22 0:01:22 --:--:-- 133k [root@yuyoho MicroService]# sudo chmod +x /usr/local/bin/docker-compose [root@yuyoho MicroService]# docker-compose --version docker-compose version 1.26.1, build f216ddbf [root@yuyoho MicroService]#
下面是详细的构建及启动过程
[root@yuyoho MicroService]# docker-compose build webapi Building webapi Step 1/6 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine 3.1-alpine: Pulling from dotnet/core/aspnet df20fa9351a1: Pull complete ca1688c5bf4a: Pull complete 777cb091de55: Pull complete bce8880f9e16: Pull complete Digest: sha256:a0944fc49430cb7b3980055dfdefcbe5b36fa5c21d8db6e68ba36cf57f54593b Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine ---> 4213a3f7e30c Step 2/6 : VOLUME /tmp ---> Running in 72977ea81356 Removing intermediate container 72977ea81356 ---> 64869e57d313 Step 3/6 : COPY ./webapi /app/ ---> c12899be6b05 Step 4/6 : WORKDIR /app Removing intermediate container ae7f8a02209c ---> eacbf02e6b8e Step 5/6 : EXPOSE 6666 ---> Running in 300076e0299f Removing intermediate container 300076e0299f ---> 47078d714d4d Step 6/6 : ENTRYPOINT ["dotnet", "yuyoho.WebApi.dll"] ---> Running in 02bd03eb4098 Removing intermediate container 02bd03eb4098 ---> 3157f66cef8e Successfully built 3157f66cef8e Successfully tagged microservice_webapi:latest [root@yuyoho MicroService]# docker-compose up -d webapi Creating network "microservice_default" with the default driver Creating microservice_webapi_1 ... done [root@yuyoho MicroService]#
我们查看下是否已经正在运行
[root@yuyoho MicroService]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e36f8e258d73 microservice_webapi "dotnet yuyoho.WebAp…" 2 minutes ago Up 2 minutes 0.0.0.0:6666->6666/tcp microservice_webapi_1 5bbcc794f9ea mysql:latest "docker-entrypoint.s…" 14 hours ago Up 14 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
可以看出,已经正在运行了,那我们现在就在主机*问下看看,到底是什么效果
什么原因呢,使我们的防火墙没开放端口,因此,我们使用如下命令开放一下
[root@yuyoho MicroService]# sudo firewall-cmd --zone=public --list-ports 5050/tcp [root@yuyoho MicroService]# firewall-cmd --zone=public --add-port=6666/tcp --permanent success [root@yuyoho MicroService]# sudo firewall-cmd --reload success [root@yuyoho MicroService]#
最后,咱们通过Postman进行接口测试
结束:
前方的路很艰辛,但是沿途的风景很美丽。好好享受过程吧