紙殼CMS可以運行在Docker上,接下來看看如何自動構建紙殼CMS的Docker Image。我們希望的是在代碼提交到GitHub以後,容器鏡像服務可以自動構建Docker Image,構建好以後,就可以直接拿這個Docker Image來運行了。 ...
紙殼CMS可以運行在Docker上,接下來看看如何自動構建紙殼CMS的Docker Image。我們希望的是在代碼提交到GitHub以後,容器鏡像服務可以自動構建Docker Image,構建好以後,就可以直接拿這個Docker Image來運行了。
Dockerfile
最重要的,就是Dockerfile中的定義了。先上代碼:
FROM microsoft/aspnetcore-build:2.0 AS builder WORKDIR /build # Copy all files COPY . ./ # Release ZKEACMS.WebHost WORKDIR /build/src/ZKEACMS.WebHost RUN dotnet publish -c Release -o ./bin/Release/PublishOutput # Release ZKEACMS.Article WORKDIR /build/src/ZKEACMS.Article RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Article # Release ZKEACMS.FormGenerator WORKDIR /build/src/ZKEACMS.FormGenerator RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.FormGenerator # Release ZKEACMS.Message WORKDIR /build/src/ZKEACMS.Message RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Message # Release ZKEACMS.Product WORKDIR /build/src/ZKEACMS.Product RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Product # Release ZKEACMS.Redirection WORKDIR /build/src/ZKEACMS.Redirection RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Redirection # Release ZKEACMS.SectionWidget WORKDIR /build/src/ZKEACMS.SectionWidget RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.SectionWidget # Release ZKEACMS.Shop WORKDIR /build/src/ZKEACMS.Shop RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Shop #Release ZKEACMS.Sitemap WORKDIR /build/src/ZKEACMS.Sitemap RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Sitemap # Tidy plugins WORKDIR /build/PluginPublisher RUN dotnet restore RUN dotnet build RUN dotnet run # Build runtime image FROM microsoft/aspnetcore:2.0 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目錄
- 發佈ZKEACMS主程式
- 發佈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