[笔记]使用Docker部署.NET Core应用程序
大概快有一年的时间没有碰过docker了,理由很简单,基本上都是在iis上部署,看到很多大佬都开始devops持续化集成了,还有就是用linux守护进程很恶心,哈哈,但相对来说成本会更高,但对于大型团队来说还是不错的,这不?不想被大伙甩下,哈哈,赶紧捞回来点丢下的知识,这篇文章就算是对我自己的笔记吧...docker 中 有ee 和 ce 两个版本,其中ee是开源的,ce是闭源的。
在linux中安装docker容器
首先我们需要检查linux内核是否大于3.1.0,通过该命令查看。
[root@izenarrdqnvpc4z ~]# uname -r 3.10.0-1062.1.2.el7.x86_64
随后我们安装docker必要的一些必要的工具,可以提前安装。
yum install -y yum-utils device-mapper-persistent-data lvm2
现在可以直接装docker了,使用命令如下
sudo wget -qo- https://get.docker.com | sh
随后检查docker版本,看看是否安装成功?
[root@izenarrdqnvpc4z ~]# docker version client: docker engine - community version: 19.03.5 api version: 1.40 go version: go1.12.12 git commit: 633a0ea built: wed nov 13 07:25:41 2019 os/arch: linux/amd64 experimental: false cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?
现在想要使用docker image 以及 docker ps 等命令还不可以,因为你还没有start docker 服务。使用这俩命令来开启与关闭docker服务。
start docker.service //开启 stop docker.service //关闭
由于我是用的阿里服务器,它给我提供了镜像加速器,这主要是为了提高拉取docker hub的速度,可以在 中看见,我的内容如下,完事之后就可以享受加速了。
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'eof' { "registry-mirrors": ["https://baqadmms.mirror.aliyuncs.com"] } eof sudo systemctl daemon-reload sudo systemctl restart docker
在.net core工程中编写dockerfile文件。
#see https://aka.ms/containerfastmode to understand how visual studio uses this dockerfile to build your images for faster debugging. #应用基础镜像 from mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim as base #工作目录 workdir /app #将整个publish文件 放到该文件下生产 copy . /app #指定对外端口 expose 5003 #启动命令 entrypoint ["dotnet", "jwt_policy_demo.dll"]
因为我的应用程序是单一部署,所以不存在动态端口 所以我这边直接useurls了。
public static ihostbuilder createhostbuilder(string[] args) => host.createdefaultbuilder(args) .configurewebhostdefaults(webbuilder => { webbuilder.usestartup<startup>(); webbuilder.useurls("http://*:5003"); });
现在通过dotnet命令发布项目,一定记得把dockerfile文件属性改为输出到输出目录哦~,随后你可以现在windows中进行测试了,例如dotnet xxx.dll命令。
随后通过filezilla上传到linux目录中publish文件夹中,当然这也是我自己的爱好,因为它的命名很符合现在的场景。
就这样我们去构建build,通过linux命令cd到发布文件夹中,然后通过build命令构建镜像,我们发现刚刚的dockerfile的命令,一步一步都执行成功了。
[root@izenarrdqnvpc4z jwtweb]# docker build -t jwtdemo . sending build context to docker daemon 22.9mb step 1/5 : from mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim as base 3.0-buster-slim: pulling from dotnet/core/aspnet 8ec398bc0356: pull complete 9584d2ef7ebe: pull complete 62b61706cd9b: pull complete 676f1d13ec65: pull complete 35ddfe9ef309: pull complete digest: sha256:de2b03f916d1f3a72d342825c3ec4414d0190862b20d2af295320334f17a1480 status: downloaded newer image for mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim ---> c7e868fda63d step 2/5 : workdir /app ---> running in 385a30e2b223 removing intermediate container 385a30e2b223 ---> b95c2a722df5 step 3/5 : copy . /app ---> 48edf64106cd step 4/5 : expose 5003 ---> running in d4bf7b3b7122 removing intermediate container d4bf7b3b7122 ---> 752724a940e8 step 5/5 : entrypoint ["dotnet", "jwt_policy_demo.dll"] ---> running in 9c0c2c190da3 removing intermediate container 9c0c2c190da3 ---> 4045861329a7 successfully built 4045861329a7 successfully tagged jwtdemo:latest
随后通过docker images 查看生成镜像是否成功,ok没问题,现在就可以run了...
[root@izenarrdqnvpc4z jwtweb]# docker images repository tag image id created size jwtdemo latest 4045861329a7 2 minutes ago 230mb mcr.microsoft.com/dotnet/core/aspnet 3.0-buster-slim c7e868fda63d 7 days ago 207mb
在docker run 中指定外部和docker内部中的映射规则 --name 是容器的名称,而最后面的是使用的所使用的镜像。
[root@izenarrdqnvpc4z jwtweb]# docker run --name jwtweb -d -p 8000:5003 jwtdemo 36c4d4f8218adeeafa737f51f0975dfe8d6aa6d17435cefc355749a59c6298a2 [root@izenarrdqnvpc4z jwtweb]# docker ps -a container id image command created status ports names 36c4d4f8218a jwtdemo "dotnet jwt_policy_d…" 7 seconds ago up 6 seconds 0.0.0.0:8000->5003/tcp jwtweb
非常简单,我刚刚发布的网站地址如下: ..
超超超超超级简单的dockerfile github地址在:传送门 ..
另外
如果不通过useurls来进行启动的话,那么可以该下dockerfile的entrypoint 如下
entrypoint ["dotnet", "jwt_policy_demo.dll","urls=http://*:5003"]
上一篇: 5种JVM调优配置方法概览!!!
下一篇: 面试必问:Spring循环依赖的三种方式
推荐阅读
-
docker部署Asp.net core应用的完整步骤
-
.net core3.0部署Linux服务器 使用Docker容器和Nginx反代理教程
-
Linux服务器部署.Net Core笔记:六、安装MySQL
-
Linux服务器部署.Net Core笔记:五、安装Nginx
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
Linux服务器部署.Net Core笔记:四、安装Supervisor进程守护
-
ASP.NET Core部署前期准备 使用Hyper-V安装Ubuntu Server 16.10
-
Linux服务器部署.Net Core笔记:目录
-
Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
-
[笔记]使用Docker部署.NET Core应用程序