在本文中,我们将详细介绍DotNet跨平台-docker部署.netcore2.0项目的各个方面,并为您提供关于dotnet跨平台gui的相关解答,同时,我们也将为您带来关于.NETCore跨平台发布
在本文中,我们将详细介绍DotNet 跨平台 - docker 部署.net core2.0 项目的各个方面,并为您提供关于dotnet跨平台gui的相关解答,同时,我们也将为您带来关于.NET Core 跨平台发布(dotnet publish)、.Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法、.net – dotnet aspnetcore docker build失败,出现145错误代码、.netCore2.1 - docker镜像部署的有用知识。
本文目录一览:- DotNet 跨平台 - docker 部署.net core2.0 项目(dotnet跨平台gui)
- .NET Core 跨平台发布(dotnet publish)
- .Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法
- .net – dotnet aspnetcore docker build失败,出现145错误代码
- .netCore2.1 - docker镜像部署
DotNet 跨平台 - docker 部署.net core2.0 项目(dotnet跨平台gui)
参考文档:
https://docs.docker.com/install/linux/docker-ce/centos/
http://www.dockerinfo.net/document
https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
https://www.cnblogs.com/viter/p/10463907.html
https://www.cnblogs.com/freewsf/p/7818791.html
https://www.cnblogs.com/sheng-jie/p/8107877.html
环境
服务器系统:CentOS Linux release 7.2.1511
相关工具:VS2017 xftp putty
服务器软件:.net core 2.0,docker 18.09.6,
前言
之前写过一篇文章,《.net core 项目部署到 centos7》,最近看到很多关于 docker 的文章,感觉这种方式确实好,所以自己也按着别人的文章实现了一把,确实很方便。先来看一张图片,下面这条大鲸鱼,很形象的描述了 Docker 的功能,上面的箱子就是一个一个独立的容器。
这里先引用官方文档对 Docker 进行一下介绍:
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
为什么要使用 Docker
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而 Docker 只需要启动 10 个隔离的应用即可。
具体说来,Docker 在如下几个方面具有较大的优势。
1、更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2、更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
一、服务器安装 dotnet-sdk
如果 CentOS 服务器没有安装 netcore,需要先用下图的命令安装一下,我选择的是 dotnet-sdk-2.0.0,大家也可以根据自己的程序来选择安装,
安装 dotnet-sdk 的参考文档:https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm #在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。每台机器只需要安装一次。
sudo yum update
sudo yum install dotnet-sdk-2.0.0 //使用docker部署,可以不用装dotnetcore环境
二、Docker 安装
在 2017 年的 3 月 1 号之后,Docker 的版本命名开始发生变化,同时将 CE 版本和 EE 版本进行分开,这里我们选择安装免费的 CE 社区版,
具体区别可以参考:https://docs.docker.com/install/linux/docker-ce/centos/
首先是添加包源:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
如果报 yum-config-manager 命令不存在,是因为系统默认没有安装这个命令,这个命令在 yum-utils 包里,可以通过命令 yum -y install yum-utils 安装就可以了
然后执行下面的安装命令:
$ sudo yum install docker-ce docker-ce-cli containerd.io //安装命令
$ sudo docker --version //查看版本
$ sudo systemctl start docker.service //启动docker
$ sudo systemctl enable docker.service //设置开机启动
通过 docker --version 命令,可以看到版本号为 18.09.6,用命令 systemctl start docker.service 启动 docker 后,我们可以测试下 docker 是否安装成功,执行 docker run hello-world 命令,会看见提示
Unable to find image ''hello-world:latest'' locally,意思是说在本地仓库没有找到镜像 ''hello-world'',之后会从官方仓库中拉取了该镜像,然后执行。看到下图的内容,就表示 docker 安装成功并运行了。
三、创建.NetCore 项目
3.1 创建演示项目
这个没什么好说的,我们用 vs2017 创建一个演示用的 mvc 项目。program.cs 文件做如下修改
3.2 为项目编写 Dockerfile 文件
有两种方法,一种是右键点击项目:添加 -->Docker 支持,创建 Dockerfile 文件;
第二种是直接在项目根目录下手动创建该文件,Dockerfile 文件的内容大致如下:
# 添加基础镜像:docker会从网络下载这个镜像
FROM microsoft/dotnet:2-aspnetcore-runtime
#容器中系统的工作空间
WORKDIR /app
#拷贝当前文件夹下的文件到容器中系统的工作空间(注意:“.”后面有空格)
COPY . /app
#设置Docker容器对外暴露的端口
EXPOSE 8080
#容器中使用 ["dotnet","系统启动的dll"] 来运行应用程序
#使用ENTRYPOINT ["dotnet","系统启动的dll"]
#或使用 CMD ["dotnet","系统启动的dll"]
ENTRYPOINT ["dotnet", "WebTest.dll"]
3.3 构建镜像
下面到了关键的一步了,构建项目镜像,我们将上面创建的 mvc 项目进行发布,然后将发布后的文件上传至 CentOS 服务器,然后定位到站点文件夹,执行下面的命令:
sudo docker build -t webtest:1.0 .
webtest 是我们创建的镜像名字,冒号后面的 1.0 可以理解为版本号,再后面是一个空格再加一个点,这个点表示当前路径!!
看到 Successfully,表示镜像构建成功。
可以输入命令 docker images 查看仓库中的镜像。
sudo docker images //查看所有镜像
sudo docker ps //查看运行中的容器
sudo docker ps -a //查看所有容器
sudo docker rm 容器id //删除容器
sudo docker rmi 镜像id //删除镜像
sudo docker pull microsoft/aspnetcore:2 //拉取指定版本的core
3.4 运行镜像
现在就差最后一步运行了,我们用下面的命令运行刚刚创建的 webtest 镜像,
这里通过 -p 参数映射容器的 8080 到宿主机的 8080 端口:8080:8080(宿主:容器)
-d 参数告诉 docker 以后台任务形式运行镜像
sudo docker run -d -p 8080:8080 webtest:1.0
输入命令 docker ps 查看运行中的容器,注意 Status 列,Up 表示我们刚刚创建的容器正在运行
四、测试站点运行情况
在我们的 windows 中,浏览器输入服务器 IP + 端口号,可以看到站点已经跑起来了
OK,任务完成。
五、扩展 docker 相关知识
Docker 的卸载,不打字了,直接截图了:
配置镜像加速
//因为默认的镜像仓库远在国外,拉取一个小的镜像时间还可以忍受,若拉取一个上G的镜像就有点太折磨人了,我们使用DaoCloud镜像加速器来进行镜像加速。Linux上配置方法如下:
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
$ sudo systemctl restart docker
如果服务器重启 reboot,你会发现站点随即挂掉了,因为容器也自动退出,如果想让服务器重启后容器内的镜像自动启动,可以在运行 docker 容器时,加上下面的命令:
docker run --restart=always -d -p 8080:8080 webtest:1.0
docker 常用命令
docker pull 镜像名称 //拉取镜像
docker rm -f 容器id //强制删除容器
docker rmi imageid //删除镜像
docker logs -f 容器ID //查看容器日志
docker stop $CONTAINER_ID /docker ps -a //查看所有的容器
docker attach 容器id //进入到容器,一般常用下面的命令进入到容器内部
docker exec -it 容器id /bin/bash 容器内安装vim:apt-get update 执行完之后执行 apt-get install vim
docker build -t s2appadmin . //使用Dockerfile文件编译Docker
dotnet publish //发布dotnetcore应用
dotnet run //启动dotnetcore应用
dotnet *.dll //在发布后的目录中执行dotnet 程序集的dll文件名,启动应用
nginx -v //查看nginx版本
nginx -s reload //重新加载nginx
nginx -s stop //停止nginx
.NET Core 跨平台发布(dotnet publish)
.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。
前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布(dotnet publish)。
.NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。
.NET Core and ASP.NET Core 1.0 RTM (release) runtime and libraries 六月底发布。
https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/
跨平台发布
简单新建一个项目。
mkdir dotnethello
cd dotnethello
dotnet new
dotnet new之后 修改project.json 如下:
{ "version": "1.0.0-*", "buildOptions": { "emitEntryPoint": true
}, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", //去掉
"version": "1.0.0-rc2-*"
}
}, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50"
}
}, "runtimes":{//加入runtime
"win7-x64": { }, "win7-x86": { }, "osx.10.10-x64": { }, "osx.10.11-x64": { }, "ubuntu.14.04-x64":{ }
}
}
添加NuGet.Config
<?xml version="1.0" encoding="utf-8"?><configuration>
<packageSources>
<clear />
<add key="AspNetCI" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" />
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
</packageSources></configuration>
dotnet restore
还原以后就可以编译发布了。
Windows:
这里默认输入 dotnet publish 会发布 win7-x64 。
我们定位到 win7-x64\publish 文件夹,可以直接执行 dotnethello.exe ,无需安装.netcore sdk 。
Ubuntu:
我们要发布到linux ubuntu 直接指定 runtime 。
dotnet publish -r ubuntu.14.04-x64
把发布文件夹(ubuntu.14.04-x64/publish)拷贝到ubuntu上。
直接就可以执行,不需要安装.netcore sdk,只需.netcore依赖的几个包:
https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/cli-prerequisites.md
Ubuntu distributions require the following libraries installed:
libunwind8
libunwind8-dev
gettext
libicu-dev
liblttng-ust-dev
libcurl4-openssl-dev
libssl-dev
uuid-dev
unzip
设置文件夹下的执行文件dotnethello 设置好权限以后直接 ./dotnethello
Mac OS:
同理mac os 一样,指定osx runtime。
dotnet publish -r osx.10.10-x64
将 osx.10.10-x64/publish 拷贝到mac os 。
OS X 需要安装libssl
OS X requires the following libraries and versions installed:
libssl 1.1
执行dotnethello
这样我们无需安装.NET Core SDK 就可以运行.NET Core 应用程序。实现了.NET Core 跨平台。
相关文章:
ASP.NET Core 1.0 入门——了解一个空项目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介
云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)
使用VS Code开发ASP.NET Core 应用程序
dotnet run是如何启动asp.net core站点的
ASP.NET Core提供模块化Middleware组件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何运行 .NET Core 应用程序
.NET Portability Analyzer 已开源
ASP.NET Core的配置(1):读取配置信息
ASP.NET Core的配置(2):配置模型详解
.NET Core 1.0 RC2 历险之旅
使用VS Code开发 调试.NET Core 应用程序
让我们Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 环境配置
官方博客明确了 .NET Core RC2/RTM 时间表
原文地址:http://www.cnblogs.com/linezero/p/5475246.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
本文分享自微信公众号 - dotNET跨平台(opendotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
.Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法
前言
本文主要介绍了关于.Net Core自动化部署用docker版jenkins部署dotnetcore应用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的实现步骤吧。
安装docker版jenkins
因为jenkins的docker版本本身没有 dotnetcore的环境,所以我们需要先自己动手制作下包含dotnet环境的jenkins Docker Container
Dockerfile
FROM jenkins/jenkins # Switch to root to install .NET Core SDK USER root # Show distro information! RUN uname -a && cat /etc/*release # Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current # Install dependency for .NET Core 2 RUN apt-get update RUN apt-get install -y curl libunwind8 gettext apt-transport-https # Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current # Install microsoft.qpg RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg RUN sh -c ''echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'' # Install the .NET Core framework RUN apt-get update RUN apt-get install -y dotnet-sdk-2.1.4 # Switch back to the jenkins user. USER jenkins
为了方便我已经把配置信息放到了github上大家可以访问直接使用
https://github.com/YahuiWong/jenkins-dotnet-core (本地下载)
使用步骤
初始化docker环境
git clone https://github.com/YahuiWong/jenkins-dotnet-core.git cd jenkins-dotnet-core sh init.sh docker-compose up -d
初始化配置jenkins
- Open ip:8080 on the browser
- vi jenkins_home/secrets/initialAdminPassword & Set the initialAdminPassword string to your jenkins page
至此安装完毕。
配置jenkins构建dotent core的任务
构建一个自由风格的软件项目
配置源码管理资料
注意:初次配置的话 需要在 添加一个可以访问代码地址的 Credentials
配置构建脚本
如下图步骤添加打包脚本
打包脚本示例
echo ''============查看打包环境================'' pwd ls echo $PATH whoami which dotnet dotnet --info dotnet --version echo ''============================begin restore======================================='' dotnet restore echo ''============================end restore======================================='' echo ''============================cd project======================================='' cd ./您的项目路径 echo ''============================begin build======================================='' dotnet build # 为了生成XML注释文件 用于swagger注释 rm -rf $WORKSPACE/jenkins_publish mkdir $WORKSPACE/jenkins_publish dotnet publish -c:Release -o $WORKSPACE/jenkins_publish # 如果针对给定运行时发布项目带上-r 如:-r centos.7-x64 cp ./bin/Debug/netcoreapp2.0/您的项目路径.xml $WORKSPACE/jenkins_publish/ # 拷贝swagger注释 echo ''============================end build=======================================''
配置发布途径
发布插件Publish Over FTP使用说明
我这里使用的是 jenkins的Publish Over FTP插件,安装好此插件之后在 系统管理->系统设置->Publish over FTP 里可以新增一个你要发布的ftp服务器信息。为了保证ftp可以正常连接建议尝试下右下角的Test Configuration确认success
上面我们已经配置好Publish Over FTP要用的ftp账号,新增我们新增构建后操作如下图选择此插件
然后选择配置好的ftp选项,配置如下所示
注意:这里的配置信息中 jenkins_publish是和打包脚本对应的
保存打包任务
立即构建
点击立即构建之后,把构建任务开始进行中
如果想看的实时的构建信息可以点击如下图看到控制台输出
构建完毕
打开部署站点地址,发现站点已经运行起来了
重点说明
Nuget配置说明
如果您的.NET CORE项目使用的了第三方或者自建nuget服务,您需要在 配置下 jenkins_home/.nuget/NuGet/NuGet.Config的信息
如我的使用了国内博客园的nuget加速地址和自建的nuget服务配置如下
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="nuget.cnblogs.com" value="https://nuget.cnblogs.com/v3/index.json" /> <add key="dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" value="https://dotnet.myget.org/F/aspnetcore-dev/ap i/v3/index.json" /> <add key="192.168.1.32:9001/nuget" value="http://192.168.1.32:9001/nuget" /> </packageSources> <packageRestore> <add key="enabled" value="True" /> <add key="automatic" value="True" /> </packageRestore> <bindingRedirects> <add key="skip" value="False" /> </bindingRedirects> <packageManagement> <add key="format" value="0" /> <add key="disabled" value="False" /> </packageManagement> </configuration>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
- .Net Core部署Docker容器
- ASP.NET Core开发Docker部署
- Docker安装部署Net Core实现过程解析
- docker部署Asp.net core应用的完整步骤
- Asp.net Core Jenkins Docker实现一键化部署的实现
- 详解ASP.NET Core Docker部署
- 使用Docker部署ASP.NET Core程序
.net – dotnet aspnetcore docker build失败,出现145错误代码
我用this tutorial创建了我的第一个docker webapi项目.
我正在使用Windows 7(docker toolBox).
这就是我跑的:
dotnet new webapi
这是Dockerfile:
FROM microsoft/dotnet:latest
copY . /app
workdir /app
RUN ["dotnet","restore"]
RUN ["dotnet","build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet","run"]
这就是我创建图像的方式:
docker build -t mydemos:aspnetcorehelloworld .
这就是我创建和运行容器的方式:
docker run -d -p 8080:5000 -t mydemos:aspnetcorehelloworld
我的服务成功运行为docker容器.
然后,我尝试更改Dockerfile以处理aspnetcore基本映像:
从microsoft / dotnet:最新更改为FROM microsoft / aspnetcore:1.0.1
新的Dockerfile看起来像:
FROM microsoft/aspnetcore:1.0.1
copY . /app
workdir /app
RUN ["dotnet","run"]
现在,我尝试使用构建新图像
docker build -t mydemos:aspnetcorehelloworld1 .
我收到一个错误.这是构建日志:
Sending build context to Docker daemon 636.9 kB
Step 1/8 : FROM microsoft/aspnetcore:1.0.1
---> 2c7bbc508bb2
Step 2/8 : copY . /app
---> Using cache
---> 1d5b9bd908b3
Step 3/8 : workdir /app
---> Using cache
---> c1d5d091d111
Step 4/8 : RUN dotnet restore
---> Running in 8399e21caeb2
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
The command 'dotnet restore' returned a non-zero code: 145
我进入网址,重新安装的东西,我仍然得到一个错误.@H_301_68@我试图在同一命令行会话中使用dotnet cli命令,我成功了(dotnet restore工作).
我试图搜索这个错误,但无法找到任何解决方案.
我在这里错过了什么?我在多次和测试中得到这个145错误.
https://hub.docker.com/r/microsoft/aspnetcore-build/
您的Dockerfile中包含以下行:
RUN ["dotnet","build"]
这意味着dotnet还原和dotnet构建命令正在您正在使用的映像中运行.由于您使用的图像没有安装SDK,因此无法找到这些命令,并且会在您看到时失败.我上面链接的存储库中的图像中安装了SDK,因此可以找到并执行dotnet restore和dotnet build命令.
安装SDK时使用基本映像的替代方法是在开发计算机上执行构建/发布过程,然后将已发布的输出复制到映像中.然后你的Dockerfile只需要查看以下内容:
FROM microsoft/aspnetcore:1.0.1
workdir /app
copY ./app .
ENTRYPOINT ["dotnet","TheNameOfYourProject.dll"]
请注意,现在在图像中运行的dotnet命令只是运行(预构建的)DLL的命令.这只需要运行时,而不是SDK.
.netCore2.1 - docker镜像部署
系统环境:Centos7
步骤 : 1:安装.net core 2:安装 docker 3:构建docker镜像
一:
执行命令:sudo yum update
sudo yum install install dotnet-sdk-2.1(这里安装最新版本)
经过漫长的过程(和网速关系比较大)
安装好之后输入 dotnet --version 可以查看当前sdk版本号 目前最新版本 2.1.500
这里可以体验把 .netCore
新创建一个文件夹: mkdir netcore
然后进入该文件夹 : cd netcore
创建 mvc 项目 : dotnet new mvc
运行创建的项目 : dotnet run
然后就可以在浏览器里查看 刚才创建的项目了
Ctrl + c 停止项目运行
二:安装 docker
yum -y install docker-ce (docker有两种版本,这里用 ce版本)
#启动 Docker 后台服务
service docker start
#测试运行 hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
docker run hello-world
这里推荐配置docker镜像加速
在文件 /etc/docker/daemon.json (没有就创建该文件) 加入
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
推荐镜像加速地址:
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
拉取镜像(提前拉取镜像,为下文构建镜像加速)
sudo docker pull microsoft/dotnet:2.1-sdk
sudo docker pull microsoft/dotnet:2.1-aspnetcore-runtime
三:构建镜像(重点部分)直接上代码
cd / 进入根目录
mkdir temp 创建文件夹
cd temp 进入创建的文件夹
mkdir AspNetCoreTodo 创建文件夹
cd AspNetCoreTodo 进入文件夹
dotnet new mvc 创建mvc项目
cd .. 进入父目录
touch Dockerfile 创建Dockerfile文件
vim Dockerfile (编辑dockerfile文件)
(粘贴文件内容)
FROM microsoft/dotnet:2.1-sdk AS build #这指示 Docker 以 microsoft/dotnet:2.0-sdk
为基础创建你的镜像
COPY AspNetCoreTodo/*.csproj ./app/AspNetCoreTodo/ #COPY
指令复制 .csproj
项目文件到镜像里的路径 /app/AspNetCoreTodo/
下
WORKDIR /app/AspNetCoreTodo #WORKDIR 是 Docker 里的 cd
RUN dotnet restore COPY AspNetCoreTodo/. ./ #dotnet restore
命令重建在 .csproj
中定义的那些程序所需的 NuGet 包
RUN dotnet publish -o out /p:PublishWithAspNetCoreTargetManifest="false"
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime #注意这里的加红部分 ,之前网上的教程就是这里运行环境版本的问题导致 docker run失败
ENV ASPNETCORE_URLS http://+:80
WORKDIR /app COPY --from=build /app/AspNetCoreTodo/out ./
ENTRYPOINT ["dotnet", "AspNetCoreTodo.dll"]
eac :wq(退出) 保存退出
构建镜像
docker build -t aspnetcoretodo . #构建镜像 , “ . ” 不能少表示的是当前目录,当前目录下面 有 Dockerfile 文件和 AspNetCoreTodo文件夹。
运行镜像
docker run --name aspnetcoretodo_sample --rm -it -p 8080:80 aspnetcoretodo # 这里是将容器的80端口映射到主机的8080 端口
浏览器访问 http://localhost:8080
完毕!
今天关于DotNet 跨平台 - docker 部署.net core2.0 项目和dotnet跨平台gui的讲解已经结束,谢谢您的阅读,如果想了解更多关于.NET Core 跨平台发布(dotnet publish)、.Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法、.net – dotnet aspnetcore docker build失败,出现145错误代码、.netCore2.1 - docker镜像部署的相关知识,请在本站搜索。
本文标签: