使用docker-compose定製Javaweb環境
阿新 • • 發佈:2018-12-03
背景
為了標準化流程與簡易化部署,本專案構建一套簡易的 JAVA 的開發/執行環境,最終達到 build,ship,run!
依賴
- Git
- Docker
>= 1.12
- Docker-Compose
Windows/macOS 版 Docker 已包含
快速部署步驟
$ git clone https://gitee.com/wuweixiang/javaweb-compose.git
$ cd javaweb-compose
$ docker-compose up
- 訪問 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
/data
Redis資料儲存目錄。/data/activemq
activemq資料儲存目錄。
專案部署
資料庫資訊,暴露埠等資訊都在 docker-compose.yml
中配置,一切除錯完成後可在啟動命令後新增 -d
引數,讓其後臺啟動,此時如果想實時檢視啟動日誌可以使用 docker-compose logs -f
進行檢視。
# 後臺啟動執行
$ docker-compose up -d
# 跟蹤檢視啟動日誌
$ docker-compose logs -f
版本資訊
- JAVA :
1.8
- MySQL :
5.7
- Tomcat
8.5.35
- Redis :
5.0.2
- ActiveMQ :
5.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專案