博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker在Linux上运行NetCore系列(四)使用私有Nuget与多个本地包引用运行ASPNetCore...
阅读量:6928 次
发布时间:2019-06-27

本文共 1984 字,大约阅读时间需要 6 分钟。

 

转发请注明此文章作者与路径,请尊重原著,违者必究。

 

      本篇文章演示了使用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】。

      访问 ,成功了:

 

-d是后台运行,--name指定容器名称,-p指定程序80端口映射到外网8082访问。

 

 

系列文章

 

可以关注本人的公众号,多年经验的原创文章共享给大家。

posted on
2018-12-27 10:40 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/alunchen/p/10183646.html

你可能感兴趣的文章
cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!...
查看>>
Selenium2(WebDriver)总结(三)---元素定位方法
查看>>
SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败
查看>>
【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)...
查看>>
ocp 1Z0-043 1-60题解析
查看>>
POJ 2777 Count Color(线段树+位运算)
查看>>
Android英文文档翻译系列(6)——LocalBroadcastManager
查看>>
Unity3D骨骼动画的分解(CleanData.Ani详解)
查看>>
java thread dump日志分析
查看>>
挑战黑客极限:Pwn2Own 2015成史上“最难”黑客大赛
查看>>
下载频道2013年超人气精华资源汇总---全都是免积分下载
查看>>
HttpClient三种不同的服务器认证客户端方案
查看>>
ntoskrnl.exe损坏或丢失的解决方式
查看>>
android 学习JSON
查看>>
MySQL REPLACE替换输出
查看>>
图像缩放_OpenCv
查看>>
Java从零开始学四十四(多线程)
查看>>
ORA-00257 archiver error 处理思路
查看>>
Mysql学习笔记(十二)触发器
查看>>
acoj-1735 输油管道 【中位数】
查看>>