我们都知道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 修改为 zookeeperdubbo.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-alpineVOLUME /tmpADD dubbo-admin-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["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的实践篇介绍到此为止。笔者这里只是抛砖引玉,在真正的开发过程中需要读者多多思考,学技术不难,难在于如何合理的使用技术。我是东方雨倾,如果您喜欢我的文章,希望点个关注多多执行哦。