compose是docker的开源项目。当遇到需要多个docker容器共同提供服务时,可以使用compose
compose有两个重要概念:
服务service:一个应用的容器,可以包含多个若干镜像的实例
项目project:由一组关联的容器组成的一个完整业务单元
安装compose
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
下载完成后,执行文件保存在/usr/local/bin下,需要添加执行方式
chmod +x /usr/local/bin/docker-compose
验证下安装的版本
docker-compose --version
docker-compose使用的yaml文件来编译,启动容器
compose构建dubbo-admin服务
1.从github获取dubbo-admin源码并修改内容
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,进行如下修改:
将 dubbo.registry.address=zookeeper://127.0.0.1:2181 修改为
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
7.扩展
在编写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