VS2017發布微服務到docker


1.本文檔以eShopOnContainers.sevices.identity為描述對象,並包含docker for windows的部分配置流程。

2.前置環境:win10操作系統。安裝VS2017NODEJS(下載LTS版本)、dockerhyper-vsql2012

3.VS2017編譯Identity.Api。部分Nuget可能需要更新依次更新。注:部分包提示版本低,我的做法是更新為最新的。

4.VS2017選擇發布Identity.Api.

5.運行docker。如果在win10下,安裝docker for windows。同時必須安裝NODEJS,並開啟Hyper-v。當運行docker時會在hyper-v里生成一個虛擬機。

 

6.下載kitematic,解壓到docker安裝目錄 例如:C:\Program Files\Docker ,並以kitematic為文件夾名保存。

 

7.下載core的運行環境鏡像。打開kitematic,搜索aspnetcore,並選擇create。注意此時是連接的國外服務器,不過由於文件不大所以可以不需要使用國內鏡像加速器。

 

8.修改docker的虛擬機網絡連接。注:此步驟是為了在測試環境下容器里程序訪問宿主機的數據庫,生產環境需要其他方法,比如直接使用linux服務器。修改網絡連接為“連接外網”,連接外網是提前設置好的,此處原本是DockrNAT

 

9.打開cmd或者powershellpowershell可以通過kitematic的左下角打開。

 

 

10.創建Identity.api的容器。

  • powershellcdidentity.api的發布根目錄。注:如果是根目錄是需要修改Dockerfile文件的否則,會buildcopy不成功。
  • 修改Dockerfile。注意要么是在發布之前修改項目里的,發布之后就是修改發布的文件夾里的。不論原本是寫的什么,此處改成如圖所示。

     

  • 修改數據庫鏈接。打開appsettings.json。修改連接字符串,我本機的IP192.168.1.19所以此處改成這個,如果hyper-v里不修改連接方式,則死活不能連接數據庫,其他方式我沒試出來。有更好方法的大家可以提出來。

     

  • powershell里,運行 docker build -t identity:01 .   具體語法參考docker的命令,注意最后有個” .”
  • 運行docker run -p 8888:80 --name identity -d identity:01  端口部分我沒有改,直接使用的參考文檔里的寫法,在VS2017里運行identity.api時默認端口是5105,此處也可以把8888改成5105.此時會看到kitematic里有一個identity被創建,等待其加載完成即可訪問。

     

11.數據庫會在第一次運行時自動創建。

12.參考:http://www.cnblogs.com/inday/p/identity-service-eshoponcontainers.html

13.特別感謝參考文檔的作者James.Ying


免責聲明!

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



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