用Docker自動構建紙殼CMS

来源:http://www.cnblogs.com/seriawei/archive/2017/11/29/zkeacms-docker.html
-Advertisement-
Play Games

紙殼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。

  1. 定義編譯環境builder
  2. 將源代碼複製到編譯環境中的build目錄
  3. 發佈ZKEACMS主程式
  4. 發佈ZKEACMS的插件到對應目錄
  5. 定義運行環境為 microsoft/aspnetcore:2.0
  6. 將發佈好的內容從編譯環境中複製到運行環境中

整個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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 返回總目錄 本小節目錄 Rename Method(函數改名) Add Parameter(添加參數) Remove Parameter(移除參數) 1Rename Method(函數改名) 概要 函數的名稱未能揭示函數的用途。 修改函數的名稱。 動機 將複雜的處理過程分解成小函數是良好的編程風格。 ...
  • 失敗的嘗試: regsvr32註冊:模塊已載入,但找不到入口點DllRegisterServer regasm註冊:需寫上regasm的完整路徑,註冊成功,但問題依舊 將項目的平臺改為x86:問題依舊 問題解決: 把Petro-SIM卸載重裝之後就好了。 之前的安裝,Petro-SIM可以正常使用, ...
  • ASP.NET Identity除了提供基於Cookie的身份驗證外,還提供了一些高級功能,如多次輸入錯誤賬戶信息後會鎖定用戶禁止登錄、集成第三方驗證、賬戶的二次驗證等,並且ASP.NET MVC的預設模板中就帶有這些功能。 本文將從以下幾個方面解釋ASP.NET Identity是如何實現身份驗證 ...
  • 在基於傳統的.NET Framework的Asp.Net Mvc的時候,本地開發環境中可以在IIS中建立一個站點,可以直接把站點的目錄指向asp.net mvc的項目的根目錄。然後build一下就可以在瀏覽器裡面刷新到最新的修改了,也可以附加到w3wp的進程進行調試。但是在開發基於.Net Core ...
  • Redis請求協議的一般形式: 備註:CR表示為\r; LF表示\n 下麵是一個例子: Redis回覆 Redis 命令會返回多種不同類型的回覆。 通過檢查伺服器發回數據的第一個位元組, 可以確定這個回覆是什麼類型: 狀態回覆(status reply)的第一個位元組是 "+" 錯誤回覆(error r ...
  • 生命周期函數:需要繼承 MonoBehaviour 類才能使用。生命周期函數全部都是由系統定義好的,系統會自動調用,且調用順序和我們在代碼裡面的書寫順序無關。 常用的生命周期函數: Awake():喚醒事件,游戲一開始運行就執行,只執行一次。 OnEnable():啟用事件,只執行一次。當腳本組件被 ...
  • hangfire是執行後臺任務的利器,具體請看官網介紹:https://www.hangfire.io/ 新建一個asp.net core mvc 項目 引入nuget包 Hangfire.AspNetCore hangfire的任務需要資料庫持久化,我們在Startup類中修改ConfigureS ...
  • 實習狗的每天新知識日常 準備工作: 1.在項目中添加對NPOI的引用,NPOI下載地址:http://npoi.codeplex.com/releases/view/38113 2.NPOI學習系列教程推薦:http://www.cnblogs.com/tonyqus/archive/2009/04 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...