本文旨在將Abp項目部署到Docker容器中,借助Gitee存儲,Jenkins持續構建,利用Docker Compose生成鏡像、啟動鏡像,在官網給定的Abp項目中,雖然用到了Dockerfile、Docker Compose,但是沒有資料指明該如何使用這兩個文件,借此我通過改造這兩個文件來完成Abp部署任務。
一、前期准備工作
1、把從Abp官網下載下來的項目(我這取名為Surround方便講解)修改成以下項目路徑結構:
其中的docker文件夾中加入Docker Compose項目,點擊具體項目(如ABP中的Web.Mvc)右鍵添加菜單中的容器業務流程協助程序支持,將出現一個docker compose項目,對於整個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,望技術有成后能回來看見自己的腳步