品嘗阿里雲容器服務:初步嘗試ASP.NET Core Web API站點的Docker自動化部署


部署場景是這樣的,我們基於 ASP.NET Core 2.0 Preview 1 開發了一個用於管理緩存的 Web API ,想通過阿里雲容器服務基於 Docker 部署為內網服務。

在這篇博文中分享一下經過實踐驗證的操作步驟:

一、創建與配置集群

1)首先創建一個 Swarm Mode 的集群(注意創建時不要選擇“自動創建負載均衡”,因為我們部署的是內網服務,自動創建的是公網負載均衡,需要手動創建內網負載均衡並綁定到集群):

2)集群創建成功后,會在集群列表中顯示下面的信息:

3)接着創建一個內網負載均衡,並將它綁定到剛剛創建的集群。

綁定方法:在集群列表中對應的集群右側點擊“管理”->“負載均衡”,在“負載均衡”中點擊“綁定SLB”進行綁定。

4)綁定好之后,為了可以通過自己的域名訪問運行在 Docker 容器中的站點,需要進行“域名設置”:

(注:這里只需設置一級域名,設置之后一定要重新部署acsrouting系統應用,詳見用nginx鏡像創建容器,體驗基於域名的路由機制

二、創建自己的鏡像倉庫

1)進入“Docker鏡像倉庫”管理控制台,創建鏡像倉庫配置,這里配置為讓阿里雲容器服務自動從 GitLab 簽出 cache-service 項目的代碼並基於其中的 Dockerfile 構建鏡像。

2)點擊鏡像倉庫的“管理”,進入“構建”,點擊“立即構建”,我們這里手動觸發鏡像的構建。

3)cache-service 項目使用的 Dockerfile 如下,使用的是微軟官方提供的專門用於構建 asp.net core 2.0 項目的 Docker 鏡像。

FROM microsoft/aspnetcore-build:2.0
WORKDIR /app
COPY src .
RUN dotnet restore CnblogsCache.sln && cd Cnblogs.Cache.WebApi && dotnet publish -c Release -o ./publish

(注:我們在構建與運行 cache-service 項目時分別用的是不同的微軟官方 Docker 鏡像 aspnetcore-build:2.0 與 aspnetcore:2.0 )

4)鏡像倉庫創建好之后,在容器服務控制台的“鏡像與方案”->“鏡像”->“用戶鏡像”中會看到。

三、創建編排

進入“鏡像與方案”->“編排模板”,點擊“創建”進入創建編輯頁面,編寫如下的編排:

version: '3'
services:
  cache-service:
    image: microsoft/aspnetcore:2.0
    depends_on:
      - dotnet-publish
    volumes:
      - share:/app
    command: bash -c "cd /app && dotnet Cnblogs.Cache.WebApi.dll"
    labels:
      aliyun.routing.port_80: cache
  dotnet-publish:
    image: cnblogs/cache-service:latest 
    volumes:
      - share:/app
    command: bash -c "rm -rf /app/* && cd /src/Cnblogs.Cache.WebApi/publish && cp -r * /app && dotnet Cnblogs.Cache.WebApi.dll" 
volumes:
  share:

注:運行 web api 站點時,我們用的微軟官方 Docker 鏡像是 microsoft/aspnetcore:2.0 ,而 build 時用的是 microsoft/aspnetcore-build:2.0 ,這是兩個分別針對運行時與構建時進行優化過的鏡像。

編寫編排中遇到的問題詳見:

四、創建應用 

1)以前一步中創建的“編排”創建應用

2)等一段時間,如果沒有遇到問題,應用就會部署成功

3)檢查所綁定的負載均衡的運行狀態是否是“運行中”

有時在部署或重新部署應用的過程中,負載均衡會處於“已停止”的狀態,如果出現這個問題,重新綁定一下負載均衡即可。

五、訪問通過阿里雲容器服務成功部署在 Docker 容器中的 Web API 站點

1)在一台用於測試的阿里雲服務器的 hosts 文件中添加 cache.cnblogs.com 的內網解析,解析到集群所綁定的負載均衡的內網 IP。

2)用 curl 命令測試一下訪問 cache service web api:

$ curl -X 'DELETE' --head -s http://cache.cnblogs.com/cache/test

測試結果:

大功告成!使用阿里雲容器服務進行生產環境的自動化部署即將夢想成真!


免責聲明!

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



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