紙殼CMS可以運行在Docker上,接下來看看如何自動構建紙殼CMS的Docker Image。我們希望的是在代碼提交到GitHub以后,容器鏡像服務可以自動構建Docker Image,構建好以后,就可以直接拿這個Docker Image來運行了。
Dockerfile
最重要的,就是Dockerfile中的定義了。先上代碼:
FROM microsoft/aspnetcore-build:latest AS builder WORKDIR /build # Copy all files COPY . ./ RUN dotnet restore # Release ZKEACMS.WebHost WORKDIR /build/src/ZKEACMS.WebHost RUN dotnet publish-zkeacms# Build runtime image FROM microsoft/aspnetcore:2.0.3 WORKDIR /zkeacms COPY --from=builder /build/src/ZKEACMS.WebHost/bin/Release/PublishOutput . EXPOSE 80 ENTRYPOINT ["dotnet", "ZKEACMS.WebHost.dll"]
簡單解釋一下,首先,需要使用microsoft/aspnetcore-build來發布紙殼CMS,因為microsoft/aspnetcore只是runtime,并不能release。
- 定義編譯環境builder
- 將源代碼復制到編譯環境中的build目錄
- 執行?restore
- 定位到?ZKEACMS.WebHost 目錄,執行發布命令?dotnet publish-zkeacms
- 定義運行環境為?microsoft/aspnetcore:2.0
- 將發布好的內容從編譯環境中復制到運行環境中
整個Dockerfile的定義很簡單,如果您已經有安裝了docker,將代碼保存到項目的根目錄,文件名為Dockerfile,就可以直接使用docker build來生成docker image了。
docker build -t zkeacms .
自動構建
已經定義好了Dockerfile,并可以在docker的環境中編譯,發布,那現在就可以使用容器鏡像服務來自動構建了。
Docker Hub
使用Docker Hub,創建一個自動構建的倉庫,連接到GitHub中的項目,可以輕松實現自動構建
選擇一個你的項目
在創建好你的倉庫以后,簡單設置一下分支和Dockerfile的路徑,就可以了
阿里云容器鏡像服務
如果你覺得Docker Hub太慢了,在國內,你可以使用阿里云的容器鏡像服務。https://dev.aliyun.com/search.html
新建一個鏡像倉庫就行了:
在設置好以后,你會發現在你的項目設置中,會多了Webhooks或者Integrations & services
?原文鏈接:http://www.zkea.net/codesnippet/detail/post-78