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

 

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

 

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

 

構建項目

      爲了演示更加全面,這裏按照簡單的領域驅動模式創建了幾個項目。web

clipboard

 

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

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

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

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

 

      由於Web API層在TestWebDockerOnLinux,因此Dockerfile在此項目中。api

clipboard

 

      項目構建都很簡單,你本身能夠構建兩個項目,一個爲Web,另一個基礎類庫。爲了演示對私有Nuget包的編譯,咱們在Web層上引用瞭如下的私有Nuget包而且引用了本地項目:post

clipboard

 

      你能夠按照系列(三)那樣修改Dockerfile,可是這裏演示不修改Dockerfile的路徑,貼圖:ui

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

相關文章
相關標籤/搜索