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

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

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

1、建立與配置集羣web

1)首先建立一個 Swarm Mode 的集羣(注意建立時不要選擇「自動建立負載均衡」,由於咱們部署的是內網服務,自動建立的是公網負載均衡,須要手動建立內網負載均衡並綁定到集羣):docker

2)集羣建立成功後,會在集羣列表中顯示下面的信息:api

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

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

4)綁定好以後,爲了能夠經過本身的域名訪問運行在 Docker 容器中的站點,須要進行「域名設置」:服務器

(注:這裏只需設置一級域名,設置以後必定要從新部署acsrouting系統應用,詳見用nginx鏡像建立容器,體驗基於域名的路由機制app

2、建立本身的鏡像倉庫負載均衡

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)鏡像倉庫建立好以後,在容器服務控制檯的「鏡像與方案」->「鏡像」->「用戶鏡像」中會看到。

3、建立編排

進入「鏡像與方案」->「編排模板」,點擊「建立」進入建立編輯頁面,編寫以下的編排:

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 ,這是兩個分別針對運行時與構建時進行優化過的鏡像。

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

4、建立應用 

1)之前一步中建立的「編排」建立應用

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

3)檢查所綁定的負載均衡的運行狀態是不是「運行中」

有時在部署或從新部署應用的過程當中,負載均衡會處於「已中止」的狀態,若是出現這個問題,從新綁定一下負載均衡便可。

5、訪問經過阿里雲容器服務成功部署在 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

測試結果:

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

相關文章
相關標籤/搜索