文章出處

部署場景是這樣的,我們基于 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

測試結果:

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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()