部署場景是這樣的,我們基于 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 ,這是兩個分別針對運行時與構建時進行優化過的鏡像。
編寫編排中遇到的問題詳見:
- 品嘗阿里云容器服務:用nginx鏡像創建容器,體驗基于域名的路由機制
- 如何編寫docker-compose配置文件實現從一個容器向另一個容器復制文件夾
- 使用阿里云容器服務部署自己的Docker鏡像遇到的問題
四、創建應用
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
測試結果:
大功告成!使用阿里云容器服務進行生產環境的自動化部署即將夢想成真!
文章列表