Docker在Linux上运行NetCore系列(四)使用私有Nuget与多个本地包引用运行ASPNetCore
转发请注明此文章作者与路径,请尊重原著,违者必究。
本篇文章演示了使用Dockerfile在Linux(ubuntu16.04)系统上构建ASPNetCore应用,并且在一个解决方案中存在多个项目之间的引用。还会使用到私有Nuget包的引用。
构建项目
为了演示更加全面,这里按照简单的领域驱动模式建立了几个项目。

Web端为:TestWebDockerOnLinux。使用swagger对外提供API,并且包含了Dockerfile文件。
基础设施层:TestWebDockerOnLinux.Core。封装了基础实体类。
核心逻辑层:TestWebDockerOnLinux.Domain。封装了业务逻辑。
仓储层:TestWebDockerOnLinux.Repository。封装了对数据库的操作,使用仓储模式。
因为Web API层在TestWebDockerOnLinux,所以Dockerfile在此项目中。

项目构建都很简单,你自己可以构建两个项目,一个为Web,另外一个基础类库。为了演示对私有Nuget包的编译,我们在Web层上引用了以下的私有Nuget包并且引用了本地项目:

你可以按照系列(三)那样修改Dockerfile,但是这里演示不修改Dockerfile的路径,贴图:

下面详细说明:

Dockerfile它是构建程序的配置文件,首先说明应用所依赖的环境,然后进行编译,最后运行。整个流程是跟我们平常使用的代码是一样的。
运行Dockerfile文件构建镜像
把项目复制到linux系统,并且进入解决方案的根目录(不是Web应用里面的目录)。

并且运行命令【sudo docker build -t testwebdockeronlinux:1.0.0 .】构建镜像。
构建时,报以下错误:

意思是引用私有Nuget包失败,因为默认都是使用微软的nuget包地址。所以需要指定一下。
配置私有Nuget包
因为我们的Nuget包有引用公共包路径,也有引用私有的包路径。所以要指定nuget的包。
先看看错误,错误指示当执行【dotnet restore】时报的错误,所以看看官网有无指定nuget地址的方法。
可以看到命令两种方法,分别是[--configfile]、[-s|--source]来指定nuget。--configfile可以指定nuget的配置文件,--source可以指定nuget地址。因为我们是多个地址,所以这里演示指定文件[--configfile]。
步骤是:Web项目下创建nuget.config文件->修改Dockerfile->运行Dockerfile。
首先先创建nuget.config文件,添加私有的以及共有的:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
<add key="AspNetCoreTools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<!--这里添加自己的包地址-->
<add key="MyNuGet" value="https://xxx/nuget" />
</packageSources>
</configuration>
然后复制nuget.config文件到Docker编译目录,以及编译时指定nuget配置文件,如下:

之后,运行命令【sudo docker build -t testwebdockeronlinux:1.0.0 .】构建镜像,成功了。
构建容器并运行程序
使用命令运行应用程序:【sudo docker run -d --name testwebdockeronlinux -p 8082:80 testwebdockeronlinux:1.0.0】。
访问 http://192.168.3.220:8082/swagger/index.html,成功了:

-d是后台运行,--name指定容器名称,-p指定程序80端口映射到外网8082访问。
系列文章
Docker在Linux/Windows上运行NetCore文章系列
可以关注本人的公众号,多年经验的原创文章共享给大家。

Docker在Linux上运行NetCore系列(四)使用私有Nuget与多个本地包引用运行ASPNetCore的更多相关文章
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 本篇文章操作系统信息 Linux:ubu ...
- 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs
原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...
- Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore
转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 开始说明 上几篇文章都是通过Linux运 ...
- Docker在Linux上运行NetCore系列(五)更新应用程序
转发请注明此文章作者与路径,请尊重原著,违者必究. 本篇文章与其它系列文章不同,为了方便测试,新建了一个ASP.Net Core视图应用. 备注:下面说的应用,只是在容器中运行的应用程序. 查看现在运 ...
- Docker在Linux上运行NetCore系列(二)把本地编译好的镜像发布到线上阿里云仓库
转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 开始 本篇文章结束在本地创建完成镜像后, ...
- Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用
系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 本篇文章操作系统信息 Windows:Window 10 Visual Studio:201 ...
- idea docker 连接 linux 上的 docker
安装插件 Docker插件,首先需要在你的IDEA中安装Docker插件,定位到File-Setting-Plugins后搜索Docker Integration安装 配置Docker服务器,在IDE ...
- 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...
- 一、netcore跨平台之 Linux上部署netcore和webapi
这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...
随机推荐
- JavaScriptDOM
DOM简介 1.HTML DOM:网页被加载时,浏览器会创建文档对象模型 2.DOM操作HTML:改变HTML的元素.属性.CSS样式.对所有事件作出反应 DOM操作HTML 1.改变HTML输出流 ...
- web项目中对post请求乱码处理
<filter> <filter-name>characterEncoding</filter-name> <filter-class>org.spri ...
- win10个人助理conrtana软件能否支持用户反馈、后续优化
上网查找了一下,win10的个人助理不支持用户反馈.这些反馈都是用户通过别的途径来发表反馈的信息,这个缺陷让用户不是特别满意,因为反馈信息不再那么简答,变得越来越繁琐.有些人还会担心自己反馈的问题会不 ...
- 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
[.NET Core项目实战-统一认证平台]开篇及目录索引 本篇将介绍如何扩展Ocelot中间件实现自定义网关,并使用2种不同数据库来演示Ocelot配置信息存储和动态更新功能,内容也是从实际设计出发 ...
- Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟
IE中的事件模拟 低版本的IE浏览器作为前端开发的一股清流,想避过都不行 虽然低版本IE正在逐步被市场淘汰,不得不承认IE8以下的浏览器依然占了不小的份额 所以这里大概介绍IE8以下的低版本IE中的事 ...
- Go语言生成随机数
在Go语言中生成随机数需要使用Seed(value)函数来提供伪随机数生成种子,一般情况下都会使用当前时间的纳秒数字,如果不在生成随机数之前调用该函数,那么每次生成的随机数都是一样的. 函数rand. ...
- Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传
开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...
- StackExchange.Redis 模糊查询和删除
初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...
- pm2日志管理pm2-logrotate介绍
先来看两个问题 问:pm2-logrotate是什么? 答:pm2-logrotate可以理解为是一个pm2的插件,它扩充了pm2本身没有功能:日志管理,所以它的运行需要依靠pm2,想用它必须先安装p ...
- 插头dp初探
问题描述 插头dp用于解决一类可基于图连通性递推的问题.用插头来表示轮廓线上的连通性,然后根据连通性与下一位结合讨论进行转移. 表示连通性的方法 与字符串循环最小表示不同,这种方法用于给轮廓线上的联通 ...