首頁>技術>

一般一個專案有前端、後端、有redis快取,有資料庫,還有資料庫的初始化資料,專案上線前生產環境上什麼都還沒有,包括專案執行的環境。本文介紹採用Docker Compose編排方式實現專案jeecg-boot後端服務及資料庫和Redis的自動部署(前提是伺服器上已經安裝好docker環境並且安裝了Docker Compose容器部署工具),不包括前端,前端另外採用nginx單獨去部署,因為考慮到掛載還要修改nginx.conf 的配置檔案,所以這裡我們只實現後端、資料庫、資料庫初始化、redis的部署,容器互相之間只能通過容器建立的時候的虛擬IP進行通訊,但是虛擬IP每一次容器的建立不一樣,業界一般是設定其可以通過容器的服務名稱進行通訊,這樣子不管以後這個容器被建立了多少次,只要保證容器的服務名稱不變,那容器與容器之間的通訊就不會有問題,下面就開始這一過程;

1、準備jeecg-boot的後端服務應用程式及資料庫指令碼,jeecg-app是應用後端服務,裡面是一個jeecg-boot.jar 包,jeecg-db裡面是資料庫的初始化指令碼jeecg-boot.sql,jeecg-redis 是redis快取,目前裡面是什麼都沒有,如果以後要單獨做redis.conf 掛載的話,裡面一般存的是redis的配置檔案

2、將準備好的應用jeecg-boot上傳到宿主機/usr/images目錄下面

3、因為我的應用是mysql資料庫,所以要構建mysql容器並初始化資料庫,注意保持與本地的資料庫版本一致,我這裡採用最新的mysql,還有,mysql資料庫預設資料庫表名是大小寫敏感的,這個在下面做容器編排的時候要注意設定資料庫忽略大小寫敏感

4、進入到/usr/images/jeecg-boot/jeecg-db目錄下編寫資料庫的Dockerfile構建檔案

5、進入到/usr/images/jeecg-boot/jeecg-app目錄下編寫後臺服務的Dockerfile構建檔案,應用需要jdk環境,所以需要構建java映象環境,我這裡也是構造最新的

編寫Dockerfile檔案

6、在/usr/images/jeecg-boot/jeecg-redis下面編寫快取的Dockerfile

注:如果需要用到自己的redis.conf 進行特殊的配置,官網也告訴了我們怎麼做

7、在/usr/images/jeecg-boot下面構建docker-compose.yml檔案,下面說明兩種編排方式

①、第一種編排方式

version: '3'services: db: build: ./jeecg-db/ ports: - "3306:3306" restart: always #如果上方映象對應的容器停止了,會自動重啟 networks: - my_net environment: MYSQL_ROOT_PASSWORD: root command: --lower_case_table_names=1 jeecg_redis: build: ./jeecg-redis/ ports: - "6379:6379" restart: always networks: - my_net app: build: ./jeecg-app/ ports: - "8080:8080" restart: always networks: - my_netnetworks: my_net: driver: bridge

②、第二種編排方式,這個更加簡單

version: '3'services: db: build: ./jeecg-db/ restart: always #如果上方映象對應的容器停止了,會自動重啟 environment: MYSQL_ROOT_PASSWORD: root command: --lower_case_table_names=1 jeecg_redis: build: ./jeecg-redis/ restart: always app: build: ./jeecg-app/ ports: - "8080:8080" restart: always depends_on: - db #設定指向了上面容器的名稱,他們兩個通過服務名實現了兩個容器的互聯互通  - jeecg_redis

8、按編排順序啟動 docekr-compose up -d

①、如果第7步是以第一種編排方式進行編排,啟動的時候如下

②、如果第7步是以第二中編排方式進行編排,啟動的時候如下所示,可以看到它預設也建立了一個網橋jeecg-boot_default

9、驗證部署是否成功

訪問http://192.168.18.132:8080/jeecg-boot/

可以看到,這裡我們就已經部署成功了,而且容器之間都可以互相通訊,app可以訪問資料庫和快取redis

注:jeecg-app工程連線資料庫容器和redis容器,不是以ip連線了,它直接以redis和資料庫容器的名稱進行連線,因為容器每一次建立,虛擬IP都會發生變化,所以用容器的名稱進行通訊更為通用

10、停止容器docekr-compose down

可以看到,停止後,容器,網橋都被移除了

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 自編譯OpenWrt 屬於自己的韌體