我們都知道Compose是docker三劍客之一,主要負責實現對 Docker 容器集群的快速編排。前面的文章也介紹了docker-compose的使用方法,今天分享一下docker-compose的實戰,讓讀者更好的理解docker-compose。
1. 從github獲取dubbo-admin源碼並修改內容
目前dubbo-admin源碼分支默認是develop,而我們需要獲取的是master分支,所以拉取代碼的時候需要指定一下分支名:
$ git clone -b master https://github.com/apache/dubbo-admin.git
由於github下載代碼的速度太慢了,筆者也是花費了很多時間才下載下來,故提供一下下載地址:
鏈接:https://pan.baidu.com/s/1NQsQJ6X0IPa7CwZvRY4PYA
提取碼:25ig
源碼下載好后,需要修改一下配置文件 ../dubbo-admin/dubbo-admin/src/main/resources/application.properties,進行如下修改:
## 將 127.0.0.1 修改為 zookeeper
dubbo.registry.address=zookeeper://zookeeper:2181
然后保存退出即可。
2. 將dubbo-admin源碼打包
下載好源碼過后,進入dubbo-admin目錄,執行命令:
$ mvn clean package -Dmaven.test.skip=true
命令執行完后,會在dubbo-admin/dubbo-admin/target目錄下生成一個jar包:dubbo-admin-0.0.1-SNAPSHOT.jar。
如果你使用的是Windows的Powershell,執行上面的命令可能會報錯:Unknown lifecycle phase ".test.skip=true".
只需要將-Dmaven.test.skip=true加上單引號即可:
$ mvn clean package '-Dmaven.test.skip=true'
3. 構建dubbo-admin鏡像
首先准備一個空文件夾,里面放兩個文件,一個Dockerfile,一個就是第二步生成的jar包dubbo-admin-0.0.1-SNAPSHOT.jar。其中Dockerfile內容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD dubbo-admin-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
這里面的內容很簡單,不多做介紹,如果有疑惑的移步:Dockerfile文件常用指令詳解
文件准備好后,在Dockerfile所在目錄執行命令:
$ docker build -t dubbo-admin:1.0 .
注意后面有個小點點。
如果構建成功,執行命令docker images就能看到你的鏡像了
$ docker images
4. 編寫docker-compose.yml模板文件
docker-compose.yml內容如下:
version: '3.4'
services:
zk_server:
image: zookeeper:3.4
ports:
- 2181:2181
dubbo-admin:
image: dubbo-admin:1.0
links:
- zk_server:zookeeper
depends_on:
- zk_server
ports:
- 7001:7001
注意:冒號(:)和短橫線(-)后面都需要加一個空格,不然可能會出問題。
如果對docker-compose.yml模板文件有疑惑的,請移步:docker-compose模板文件常用指令
5. 運行
在docker-compose.yml所在目錄運行命令:
$ docker-compose up
如果沒有其他問題的話,應該能正常的看到日志輸出。
6. 驗證dubbo-admin正常運行
在瀏覽器輸入ip:7001即可進入dubbo-admin后台,初始用戶名/密碼是:root/root
擴展
在編寫docker-compose.yml之前我們手動的構建了dubbo-admin的鏡像,也就是上文的第三步,其實這一步可以省略,使用的就是compose模板文件的build指令。修改后的docker-compose.yml文件內容如下:
version: '3.4'
services:
zk_server:
image: zookeeper:3.4
ports:
- 2181:2181
dubbo-admin:
build:
context: .
dockerfile: Dockerfile
links:
- zk_server:zookeeper
depends_on:
- zk_server
ports:
- 7001:7001
有興趣的讀者可以自行嘗試一下。
好了,關於docker-compose的實踐篇介紹到此為止。筆者這里只是拋磚引玉,在真正的開發過程中需要讀者多多思考,學技術不難,難在於如何合理的使用技術。我是東方雨傾,如果您喜歡我的文章,希望點個關注多多執行哦。