您的位置:首页 > 运维架构 > Docker

AspNetCoreapi 使用 Docker + Centos 7部署

2018-10-29 16:32 836 查看

 

好久没有更新文章了,前段时间写了一系列的文章放到桌面了,想着修修改改,后来系统中勒索病毒了还被公司网络安全的抓到是我电脑,后来装系统文章给装丢了。然后好长一段时间没有写了。

今天记录一下AspNetCore部署Docker+Centos7这里说明一下:Docker需要用Centos7版本的操作系统

这里模拟演示的是实战环境的部署,项目就是使用的实战中的项目

1:安装前准备

  首先确保我们有一台Linux服务器或者系统或者虚拟机,我使用的是虚拟机系统做的Centos7的版本。然后确保网络是通的,最好能联通外网,因为我们在部署的过程须有很多的东西需要下载:

部署中使用的工具:secureCRT:链接Linux终端的服务器,

                           :XFTP5   :上传发布的文件

2:安装Docker步骤如下:

  使用:secureCRT链接上Linux如下:

  

  Docker的官方文档:https://docs.docker.com/

  Docker分为社区版CE和企业版EE,CE是免费提供给开发者和小团体使用,企业版的是收费的,我这里选择使用的是社区版的。

  步骤:如下

  1.开始安装:首先执行命令安装所需的包:sudoyuminstall-yyum-utils\device-mapper-persistent-data\lvm2

  2.设置稳定的存储库:sudo

yum-config-manager
\
--add-repo
\
https://download.docker.com/linux/centos/docker-ce.repo

  3.安装:sudo

yuminstalldocker-ce

  4.启动:sudo

systemctlstartdocker

  5.验证是否成功:sudo

dockerversion

  6.安装结果:

  

  这里是官方安装过程:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1

  

3:AspNetCore镜像的选择与拉取

  选择下载镜像前我们首先需要确定的是我们项目将要或者已经使用的是什么版本的项目框架,我们项目使用的是2.1;

  

  

  在下载镜像的时候我们可以事先给下载好镜像,也可以使用Dockerfile文件进行下载:

  如果我们需要在Docker容器中进行编译打包运行等操作的时候我们就需要安装完整的SDK了,如果我们只是单纯的运行的话只需要安装运行时aspnetcore-runtime就行:官方文档中也有明确的说明:

  

  拉取镜像有两种方式如下:

  1.使用命令拉取镜像:dockerpullmicrosoft/dotnet:2.1-sdk

  

  查看结果:dockerimages

   

  2.使用Dockerfile文件拉取

  新建新建文件去掉后缀名命名为:Dockerfile 编辑文件内容如下:请注意FROM节点上也是咱们将要使用的镜像:下图箭头指向部分

  

  切换到Dockerfile文件所在的目录下执行命令创建一个镜像

  

  查看结果:

  

  这里有两个镜像名为ESD镜像就是咱们的项目运行镜像了,但是我们没有准备任何将要运行的项目,所以此镜像是失败的,我们执行这一步证明了Docker可以直接拉取项目运行的镜像。

  执行命令对它进行删除:dockerrmi esd(可以使用镜像的名称或者镜像的ID进行删除)

  

4:项目的部署:

  首先在进行部署前我建议大家先看认真看一边官方有关Docker的网络配置

  https://docs.docker.com/network/

  一个新的项目如果不对项目的IP或端口进行任何改变的话部署成功后默认监听的是80端口,如下图所示:

  

  如果你不进行改变的话也就是说这个项目部署是就使用80端口了,在创建容器的时候重新指定的端口就访问不通了。

  所以我首先改动了项目中的项目运行时监听的端口在项目文件Program添加代码如下:

  .UseKestrel().UseUrls("http://*:8091")//在所有网络接口上监听端口8091

  

  改好后进行发布:发布完成后上传到服务器Dockerfire文件所在的目录中

  对Dockerfire进行修改

  

#表示当前创建的镜像所依赖的基础镜像

  FROMmicrosoft/dotnet:2.1-sdk

  #表示当前容器的工作目录将要运行的web程序放在容器中的那个目录下,没有会自动创建

  WORKDIR/app

  #设置对外暴露的端口,不设置默认为80

  EXPOSE8091

  #表示会把当前目录下的Web程序文件拷贝到容器的/app文件下,

  COPY..

  #将要执行的命令

  CMD["dotnet","lenovo.core.ESDDB.WebApi.dll"]

  使用命令运行该Dockerfire文件创建容器

  命令:dockerbuild-t esdapi.  

  这个命令需要注意的是镜像名称不要使用大写镜像名称后的“点”不要忽略了

  

  创建容器:

  命令:dockerrun--nameesdapi-d-p8091:8091esdapi

  结果如图所示:

  

  查看结果:dockerps

  

  这里注意的是在查看结果的时候如果没有容器在运行则使用dockerps-a命令查看容器找到容器的ID使用dockerlogs+容器ID查看容器日志信息找原因。

  外部访问部署结果:

  

  大家对直接考软考高级,以及PMP证书感兴趣的话可以加群815186020目前机构正在搞活动优惠很多,说“乐途”介绍的应该会有优惠

有不足之处希望大家指出相互学习,

           本文原创:转载请注明出处谢谢!

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: