由于一些安全因素,Apollo组件扫描出一些依赖插件存在安全漏洞,因此要修改部分依赖组件的版本,重新制作镜像,我们来看一下如何实现
1. 修改源码
1.1 拉取源码,并切换到我们需要的分支
# 拉取源码项目
git clone git@github.com:apolloconfig/apollo.git
# 切换到2.2.0版本
git checkout tags/v2.2.0
1.2 修改源码依赖
# 比如我们修改postgresql连接器的版本
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.5.5</version>
</dependency>
2. 通过源码构建docker镜像
该脚本会依次打包apollo-configservice, apollo-adminservice, apollo-portal。
./scripts/build.sh
# 如果没有执行权限,可以执行 chmod +x ./scripts/build.sh 添加该文件的执行权限
构建 Docker 镜像
mvn docker:build -pl apollo-configservice,apollo-adminservice,apollo-portal
通过docker images命令查看镜像是否已经构建成功
3. 镜像测试
3.1 创建数据库,修改数据
分别执行apolloconfigdb.sql、apolloportaldb.sql创建数据库和表结构、初始化数据。
修改apolloconfigdb库的Serviceconfig表的key为eureka.service.url的这行的value列的数据,将http://localhost:8080/eureka中的localhost改为自己的电脑内网ip(使用ifconfig查看)
3.2 启动Apollo
apollo-configservice
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://172.20.10.4:3306/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=lizy -e SPRING_DATASOURCE_PASSWORD="123456" \
-d -v /Users/dliony/test/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice:2.2.0
apollo-adminservice
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://172.20.10.4:3306/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=lizy -e SPRING_DATASOURCE_PASSWORD="123456" \
-d -v /Users/dliony/test/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice:2.2.0
apollo-portal
docker run -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://172.20.10.4:3306/apolloportaldb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=lizy -e SPRING_DATASOURCE_PASSWORD="123456" \
-e APOLLO_PORTAL_ENVS=dev \
-e DEV_META=http://172.20.10.4:8080 -e local.meta=http://172.20.10.4:8080 \
-d -v /Users/dliony/test/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:2.1.0
注意:172.20.10.4为电脑的内网IP,容器环境下请不要写localhost/127.0.0.1
3.3 查看eureka中config和admin是否已经注册成功
地址:http://localhost:8080
3.4 登录Apollo
地址:http://localhost:8070
默认账号密码:apollo/admin