1. 程式人生 > >把ABP框架部署到Docker中

把ABP框架部署到Docker中

  本文旨在將Abp專案部署到Docker容器中,藉助Gitee儲存,Jenkins持續構建,利用Docker Compose生成映象、啟動映象,在官網給定的Abp專案中,雖然用到了Dockerfile、Docker Compose,但是沒有資料指明該如何使用這兩個檔案,藉此我通過改造這兩個檔案來完成Abp部署任務。

 

一、前期準備工作

  1、把從Abp官網下載下來的專案(我這取名為Surround方便講解)修改成以下專案路徑結構:

  

  其中的docker資料夾中加入Docker Compose專案,點選專案解決方案右鍵docker支援,將出現一個docker compose專案,對於整個docker compose專案的路徑按照約定設計(對於VS 2017 15.8版本後新增不再有這個docker compose專案,可以考慮從

我的倉庫中直接搬運到本機上)。

  2、處理docker compose中的指令碼配置,在docker-compose.yaml中指定兩個服務相關資訊,映象名稱、dockerfile的路徑地址,此處在build中指定context為本目錄的上級目錄,按照上圖中的位置就是在/xxx專案這一級,然後指定dockerfile的路徑為src/Surround.Web.Host/Dockerfile指明具體的Dockerfle路徑,同樣對於surroundmvc同樣如此處理。

version: '3.4'

services:
  surroundhost:
    image: ${DOCKER_REGISTRY}surroundhost
    build:
      context: ../
      dockerfile: src/Surround.Web.Host/Dockerfile
  surroundmvc:
    image: ${DOCKER_REGISTRY}surroundmvc
    build:
      context: ../
      dockerfile: src/Surround.Web.Mvc/Dockerfile

  對於docker-compose.override.yaml檔案,這是對前一個檔案的補充,docker compose會將兩個檔案進行合併,在此檔案中指定環境變數和對外埠此處docker compose設定的埠優先順序高於dockerfile設定的埠,此處設定後dockerfile的埠則失效,此處設定內部埠為80埠,外部埠隨機獲取一個,如果想固定埠,則可以寫 - "32100:80" 那麼外部埠便固定為32100。

version: '3.4'

services:
  surroundhost:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - 
"80" surroundmvc: environment: - ASPNETCORE_ENVIRONMENT=Development ports: - "80"

  3、選中Surround.Web.Mvc點選右鍵選中新增,加入新的dockerfile檔案,不再使用已有的dockerfile檔案,同時建議修改dockerfile中的指定埠為80埠,這樣就促成了約定所有的新專案加入進來容器內部都使用80埠,如有需要另改即可,同樣對Surround.Web.Host也執行這樣的操作。 

  

  4、需要註釋Surround.Web.Host中的該部分配置:

  

  該部分配置用於Swagger文件的根目錄位置,但是如果不註釋掉Web.Host中的ServerRootAddress將會引起,由於外部埠與此處指定的埠不一致導致。

  

  5、在Jenkins中新建專案並編寫指令碼

  如需檢視Jenkins的安裝過程可以檢視https://www.cnblogs.com/CKExp/p/9536864.html,這裡不再陳述,

  在另一篇https://www.cnblogs.com/CKExp/p/9940479.html,講解了Surround在Jenkins中新建專案的過程,可以直接使用。

  本次執行完畢,之後有新程式碼提交,將會自動構建,如果需要指定對外埠,可以在docker-compose.override.yaml文件中指定外部埠,如果不指定,則每次生成後都是使用的隨機埠,

 

二、部署完畢檢視效果

  構建完畢可以通過指令碼檢視docker ps -a,檢視容器已經生成並已經處於執行中了。

  

  通過伺服器地址:外部埠的形式可以直接訪問檢視。

  

  

   至此,abp部署在docker中算是完成了,主要是修改了原有abp專案中的docker compose檔案和dockerfile檔案。

 

  本文地址: https://www.cnblogs.com/CKExp/p/9765907.html 

  歡迎關注微信訂閱號,有新的文章將同步到訂閱號中

  

2018-11-11,望技術有成後能回來看見自己的腳步