1. 程式人生 > >使用docker-compose定製Javaweb環境

使用docker-compose定製Javaweb環境

背景

為了標準化流程與簡易化部署,本專案構建一套簡易的 JAVA 的開發/執行環境,最終達到 build,ship,run!

依賴

快速部署步驟

  1. $ git clone https://gitee.com/wuweixiang/javaweb-compose.git
  2. $ cd javaweb-compose
  3. $ docker-compose up
  4. 訪問 http://127.0.0.1

運維命令:

$ docker-compose help   # docker-compose 命令幫助
$ docker-compose up     # 建立並啟動 docker 編排服務
$ docker-compose down   # 停止並移除 docker 編排服務 (更改配置檔案時建議使用)
$ docker-compose exec javaweb-compose bash # ssh 登入 java 容器

資料庫資訊

  • hostname: mysql

此處的資料庫連線地址 hostname 值為 mysql ,容器中會在自己的 /etc/hosts 中新增一條 1xx.xx.xx.xx mysql 的 host,這會將 http://mysql 這個地址指向 mysql 容器的實際內網地址,等效於常見的 http://localhost

資料持久化

容器內的資料會隨著容器的銷燬而丟失,所以需要配置 docker-compose.yml 檔案將以下目錄同步到你的物理機目錄進行持久化:

  • /var/lib/mysql MySQL 的檔案存放目錄,必須掛載,否則銷燬容器後資料丟失。
  • /usr/local/tomcat/logs
    Tomcat 的日誌目錄,掛載後檢視日誌無須進入容器內部。
  • /data Redis資料儲存目錄。
  • /data/activemq activemq資料儲存目錄。

專案部署

資料庫資訊,暴露埠等資訊都在 docker-compose.yml 中配置,一切除錯完成後可在啟動命令後新增 -d 引數,讓其後臺啟動,此時如果想實時檢視啟動日誌可以使用 docker-compose logs -f 進行檢視。

# 後臺啟動執行
$ docker-compose up -d

# 跟蹤檢視啟動日誌
$ docker-compose logs -f

版本資訊

  • JAVA1.8
  • MySQL5.7
  • Tomcat
    8.5.35
  • Redis5.0.2
  • ActiveMQ5.14.3

版本資訊可在 Dockerfile 中進行修改,修改 Dockerfile 後需要將 docker-compose 中的構建方式改為構建本地映象:

# 免構建映象
# image: redis:5.0.2
# 構建本地映象
  build: ./redis

修改完成後啟動時需要重新構建映象:

$ docker-compose up --build

目錄結構

javaweb-compose/
├── activemq
│   ├── data  # 容器資料掛載目錄
│   ├── Dockerfile   # activemq 構建檔案
│   └── logs   # 容器日誌掛載目錄
├── docker-compose.yml  # docker-compose 配置檔案
├── gitclone-javaweb
│   └── readme.md 
│        方式一(TODO): 
│        在./tomcat下通過 Shell指令碼(通過Dockerfile去觸發)
│        1. 將程式碼Clone到此目錄下
│        2. 編譯成war
│        3. 將war包放置./tomcat/webapps/下
│        方式二:
│        直接將war包放置./tomcat/webapps/下
├── mysql
│   ├── conf  # 容器配置掛載目錄
│   ├── data  # 容器資料掛載目錄
│   └── Dockerfile   # MySQL 構建檔案
├── README.md
├── redis
│   ├── conf   # 容器配置掛載目錄
│   ├── data   # 容器資料掛載目錄
│   └── Dockerfile
└── tomcat
    ├── conf    # 容器配置掛載目錄
    ├── Dockerfile   # Tomcat 構建檔案
    ├── logs   # 容器日誌掛載目錄
    └── webapps
        └── ROOT   # tomcat預設ROOT專案