Docker在Linux上運行NetCore系列(四)使用私有Nuget與多個本地包引用運行ASPNetCore


 

轉發請注明此文章作者與路徑,請尊重原著,違者必究。

 

      本篇文章演示了使用Dockerfile在Linux(ubuntu16.04)系統上構建ASPNetCore應用,並且在一個解決方案中存在多個項目之間的引用。還會使用到私有Nuget包的引用。

 

構建項目

      為了演示更加全面,這里按照簡單的領域驅動模式建立了幾個項目。

clipboard

 

Web端為:TestWebDockerOnLinux。使用swagger對外提供API,並且包含了Dockerfile文件。

基礎設施層:TestWebDockerOnLinux.Core。封裝了基礎實體類。

核心邏輯層:TestWebDockerOnLinux.Domain。封裝了業務邏輯。

倉儲層:TestWebDockerOnLinux.Repository。封裝了對數據庫的操作,使用倉儲模式。

 

      因為Web API層在TestWebDockerOnLinux,所以Dockerfile在此項目中。

clipboard

 

      項目構建都很簡單,你自己可以構建兩個項目,一個為Web,另外一個基礎類庫。為了演示對私有Nuget包的編譯,我們在Web層上引用了以下的私有Nuget包並且引用了本地項目:

clipboard

 

      你可以按照系列(三)那樣修改Dockerfile,但是這里演示不修改Dockerfile的路徑,貼圖:

clipboard

 

下面詳細說明:

Snipaste_2018-12-27_10-35-34

 

      Dockerfile它是構建程序的配置文件,首先說明應用所依賴的環境,然后進行編譯,最后運行。整個流程是跟我們平常使用的代碼是一樣的。

 

運行Dockerfile文件構建鏡像

      把項目復制到linux系統,並且進入解決方案的根目錄(不是Web應用里面的目錄)。

clipboard

 

      並且運行命令【sudo docker build -t testwebdockeronlinux:1.0.0 .】構建鏡像。

      構建時,報以下錯誤:

clipboard

 

      意思是引用私有Nuget包失敗,因為默認都是使用微軟的nuget包地址。所以需要指定一下。

 

配置私有Nuget包

      因為我們的Nuget包有引用公共包路徑,也有引用私有的包路徑。所以要指定nuget的包。

      先看看錯誤,錯誤指示當執行【dotnet restore】時報的錯誤,所以看看官網有無指定nuget地址的方法。

      可以看到命令兩種方法,分別是[--configfile]、[-s|--source]來指定nuget。--configfile可以指定nuget的配置文件,--source可以指定nuget地址。因為我們是多個地址,所以這里演示指定文件[--configfile]。

      步驟是:Web項目下創建nuget.config文件->修改Dockerfile->運行Dockerfile。

      首先先創建nuget.config文件,添加私有的以及共有的:

clipboard

 

<?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配置文件,如下:

clipboard

 

之后,運行命令【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,成功了:

clipboard

 

-d是后台運行,--name指定容器名稱,-p指定程序80端口映射到外網8082訪問。

 

 

系列文章

Docker在Linux/Windows上運行NetCore文章系列

 

可以關注本人的公眾號,多年經驗的原創文章共享給大家。

914305-20181015182707033-510683802


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM