Docker部署NETCORE应用程序

创建.netcore项目,本文以ASP.NET Core2.2 版本为例

设置Dockerfile属性始终复制

编辑Dockerfile内容

FROM microsoft/dotnet:2.2-aspnetcore-runtime
MAINTAINER lihongyuan
LABEL description="this is a test website"
LABEL version="1.0"
WORKDIR /app
COPY . .
EXPOSE 8888
ENTRYPOINT ["dotnet", "ProjNetCore2.dll"]

说明:

FROM microsoft/dotnet:2.2-aspnetcore-runtime  #基础镜像为dotnetcore
MAINTAINER demo                    #作者 LABEL description="this is a test website"  #描述
LABEL version="1.0"                 #描述 WORKDIR /app                    #工作目录
COPY . .                      #将当前目录下的文件,复制到WORKDIR目录
EXPOSE 8888                    #容器暴漏8888端口,与Program.cs中设置的端口一致
ENTRYPOINT ["dotnet","demo.dll"]      #运行容器的命令

修改Program.cs文件,默认端口的指向为 8888 与Dockerfile 文中一致。

       public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://*:8888")
.UseStartup<Startup>();

发布项目

使用WinSCP 把发布后的项目上传到 服务器上。

些处上传目录为 /tmp/web

[root@localhost ~]# cd /tmp/web/
[root@localhost web]#
[root@localhost web]# ls
publish
[root@localhost web]#

根据当前目录下dockerfile配置文件,进行打包(demo 为自己定义的镜像名)

docker build -t demo .
[root@localhost ~]#
[root@localhost ~]# cd /tmp/web/publish/
[root@localhost publish]# ls
appsettings.Development.json Dockerfile ProjNetCore2.dll ProjNetCore2.runtimeconfig.json ProjNetCore2.Views.pdb wwwroot
appsettings.json ProjNetCore2.deps.json ProjNetCore2.pdb ProjNetCore2.Views.dll web.config
[root@localhost publish]#
[root@localhost publish]# docker build -t imagedemo .
Sending build context to Docker daemon .212MB
Step / : FROM microsoft/dotnet:2.2-aspnetcore-runtime
---> ccf4063f0898
Step / : MAINTAINER lihongyuan
---> Running in 176e4b1eba2b
Removing intermediate container 176e4b1eba2b
---> 5d384a0303f9
Step / : LABEL description="this is a test website"
---> Running in 09664d85b4dd
Removing intermediate container 09664d85b4dd
---> e9890e799c19
Step / : LABEL version="1.0"
---> Running in 93724ba2ac89
Removing intermediate container 93724ba2ac89
---> b91ff0f19154
Step / : WORKDIR /app
---> Running in 338a59ca24b3
Removing intermediate container 338a59ca24b3
---> 64098342a151
Step / : COPY . .
---> 26ab61b0731b
Step / : EXPOSE
---> Running in 4c0ee7ff2687
Removing intermediate container 4c0ee7ff2687
---> 5760b9754387
Step / : ENTRYPOINT ["dotnet", "ProjNetCore2.dll"]
---> Running in 979a9b8c68b3
Removing intermediate container 979a9b8c68b3
---> 5ae0691c4556
Successfully built 5ae0691c4556
Successfully tagged imagedemo:latest
[root@localhost publish]#

打镜像成功:

[root@localhost publish]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imagedemo latest 5ae0691c4556 About a minute ago 265MB
nginx latest 540a289bab6c weeks ago 126MB
microsoft/dotnet 2.2-aspnetcore-runtime ccf4063f0898 weeks ago 261MB
nginx <none> ab56bba91343 weeks ago 126MB
rancher/rancher-agent v2.2.8 d499bdb8fd09 months ago 285MB
rancher/rancher latest 59caa36aff1e months ago 482MB
rancher/rke-tools v0.1.42 6fb74f33a5e1 months ago 131MB
rancher/hyperkube v1.14.6-rancher1 4c0a26e51da8 months ago .05GB
sonatype/nexus3 latest 35ca857d5b19 months ago 599MB
rancher/nginx-ingress-controller 0.21.-rancher3 2b37f252629b months ago 569MB
rancher/kube-api-auth v0.1.3 2817cb463960 months ago 149MB
rancher/coredns-coredns 1.3. eb516548c180 months ago .3MB
rancher/calico-node v3.4.0 a89b45f36d5e months ago .9MB
rancher/calico-cni v3.4.0 d531d047a4e2 months ago .4MB
rancher/coreos-etcd v3.3.10-rancher1 643c21638c1c months ago .5MB
rancher/cluster-proportional-autoscaler 1.3. 33813c948942 months ago .8MB
rancher/nginx-ingress-controller-defaultbackend 1.5-rancher1 b5af743e5984 months ago .13MB
rancher/metrics-server v0.3.1 61a0c90da56e months ago .8MB
rancher/coreos-flannel v0.10.0 f0fad859c909 months ago .6MB
rancher/pause 3.1 da86e6ba6ca1 months ago 742kB
[root@localhost publish]#

运行Docker容器

docker run --name mydemo -d -p : imagedemo

说明:

--name 后面跟容器名称

-p是进行宿主和容器之间端口的映射,(-p 宿主端口:容器端口)

-d命令,容器就会一直运行,即使关掉终端窗口

imagedemo为前面生成的项目镜像

以后台模式启动一个容器,将容器的 8888 端口映射到主机的 8888 端口

运行后,可查看到新的容器:

访问网站:http://192.168.122.199:8888/

完成!

Docker 进入容器命令:

docker exec -it 775c7c9ee1e1 /bin/bash 

退出容器:exit

参考:https://www.cnblogs.com/hyunbar/p/10277100.html

Docker部署NETCORE应用程序的更多相关文章

  1. 【转载】如何使用docker部署c/c++程序

    原文地址:https://blog.csdn.net/len_yue_mo_fu/article/details/80189035 Docker介绍 Docker是一个开源的容器引擎,它有助于更快地交 ...

  2. Docker部署Python应用程序

    Docker部署Python应用程序 1. 单个py文件部署 生成Dockerfile 文件 插件用的豆瓣的镜像,,重置时间(容器的默认时间是UTC时间与宿主机的相差8小时). 文中需要三个插件(pe ...

  3. Docker部署netcore web实践

    1. 新建一个netcore的项目 2. 我们到项目的生成输出目录下,创建一个Dockerfile文件 3. 编辑Dockerfile文件 备注:红线圈住的地方,就是你生成的netcore的程序名称 ...

  4. docker 部署net core程序 curl访问地址 提示 Connection reset by peer

    最近研究netcore 部署到docker上.在参考https://www.cnblogs.com/subendong/p/8992285.html教程之后,部署成功.但是curl访问对应的主机端口地 ...

  5. docker部署netcore应用(二)

    基于第一章已经安装好了docker,这次将把netcore应用部署到docker容器中 开发工具vs2017,准备个DotNet Core的Console应用程序,测试一下 发布DockerTest项 ...

  6. Centos 中使用通过docker 部署.netcore

    此前,我一直觉得,目前网络上的各种各样的技术文章.技术文档已经足够多,任何一种技术,都可以或多或少的在网络上找到教程,或者在qq群里找到前辈解答.所以,我觉得自己在博客上写文章的意义甚少.甚至觉得自己 ...

  7. CentOS利用Nginx+Docker部署.netcore应用

    安装docker 官方文档https://docs.docker.com/engine/installation/linux/docker-ce/centos/ [root@sn ~]# yum re ...

  8. docker 部署一个 aspnetmvc 程序

    准备mvc的程序[asp.net mvc5 网站]  使用刚才创建的镜像,并把上诉文件目录挂载到iis指定磁盘docker run -d -p 83:80 --name docker-drgs -v  ...

  9. docker 部署netcore 的关键语句

    网站容器:docker run -it --name myTestWeb -p 8080:80 -v /mnt/hgfs/my_share/core/website/:/website microso ...

随机推荐

  1. sklearn调用分类算法的评价指标

    sklearn分类算法的评价指标调用#二分类问题的算法评价指标import numpy as npimport matplotlib.pyplot as pltimport pandas as pdf ...

  2. pyhton机器学习入门基础(机器学习与决策树)

    //2019.07.26#scikit-learn数据挖掘工具包1.Scikit learn是基于python的数据挖掘和机器学习的工具包,方便实现数据的数据分析与高级操作,是数据分析里面非常重要的工 ...

  3. 如何解决 Django 前后端分离开发的跨域问题

    一.同源策略 1.先来说说什么是源 • 源(origin)就是协议.域名和端口号. 以上url中的源就是:http://www.company.com:80 若地址里面的协议.域名和端口号均相同则属于 ...

  4. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...

  5. Ternsorflow 学习:006-MNIST进阶 深入MNIST

    前言 这篇文章适合实践过MNIST入门的人学习观看.没有看过MNIST基础的人请移步这里 深入MNIST TensorFlow是一个非常强大的用来做大规模数值计算的库.其所擅长的任务之一就是实现以及训 ...

  6. InnoDB 和 MyISAM的索引区别

    MyISAM索引实现 MyISAM索引文件和数据文件是分离的,索引文件的data域保存记录所在页的地址(物理存储位置),通过这些地址来读取页,进而读取被索引的行数据. MyISAM的索引原理图如下,C ...

  7. Day5-T2

    原题目 根据社会学研究表明,人们都喜欢和自己身高相近的人做朋友. 现在有 N 名身高各不相同的同学依次走进教室. 调查人员想预测每个人在走入教室的瞬间最想和 已经在教室的哪个人做朋友.当有两名同学和这 ...

  8. ThinkCMF框架上的任意内容包含漏洞

    一.背景 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建. ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据 ...

  9. 吴裕雄--天生自然java开发常用类库学习笔记:线程的生命周期

    class MyThread implements Runnable{ private boolean flag = true ; // 定义标志位 public void run(){ int i ...

  10. Centos 8下命令行界面支持鼠标

    yum install gpm* service gpm start systemctl enable gpm.service