docker java opt_docker中的java客户端项目如何使用apollo配置中心

完成了apollo配置中心的搭建工作之后,最重要的就是apollo配置中心的使用。Apollo的详细使用可参考apollo wiki中给出《Java客户端使用指南》 。

下面简单介绍快速使用,并会说到部署在docker中的项目作为apollo的客户端时,该如何配置,如何使用?

环境要求:java 1.7+ , Guava 15.0+ (apollo客户端默认引入19.0),如果你的项目引入的其他版本,确保版本号大于等于15.0

运行环境:windows, linux, docker

Apollo使用指南

访问apollo配置页面

默认登录账号: apollo/admin

项目中的配置

主要配置有三项:

(1)、配置AppId

AppId是应用的身份信息,是从服务端获取配置的一个重要信息。

此信息推荐通过配置文件的形式来配置,省的其他开发同事每次都配一遍的系统参数,配置文件的方式,官方wiki也给出来三种方式,下面列出我使用的一种:

配在app.properties文件中

确保classpath:/META-INF/app.properties文件存在,并且其中内容形如:

app.id=YOUR-APP-ID

文件位置参考如下:

9f257ff8fb33d8dc02897856852283e9.png

(2)、配置环境

在windows系统的开发环境,推荐通过配置文件的形式配置:

通过配置文件来指定env=YOUR-ENVIRONMENT

默认文件位置:

对于Mac/Linux,文件位置为/opt/settings/server.properties

对于Windows,文件位置为C:\opt\settings\server.properties

文件内容形如:

env=DEV

如果linux非docker中部署,同一台机器也可以这样配置,对一台服务来说这是一劳永逸的事情,其他项目共享此配置。

在docker中部署的项目,推荐使用java system property:

通过Java的System Property env来指定环境

在Java程序启动脚本中,可以指定-Denv=YOUR-ENVIRONMENT

如果是运行jar文件,需要注意格式是java -Denv=YOUR-ENVIRONMENT -jar xxx.jar

注意key为全小写

所以我们就可以想到docker的专属文件Dockerfile,如下图,在项目的resource的资源目录下

66447b5921dcaefbf173a31ab6d8126e.png

打开Dockerfile文件,如下图中,在参数ENTRYPOINT中加入系统参数-Denv=DEV,就可以了

2df37834b705ec17c4de2693d43cd30f.png

为什么选用系统参数的形式,而不再用配置文件的形式呢?

第一,这种比较方便,丢到任何docker环境中都可以使用

第二,就是考虑docker的特殊性,配置文件放在外面访问不到,放在容器里面,每次部署项目都去重新配置,太不现实,更不友好。

当然,如果是非常熟悉docker,给项目的docker配置加一个文件卷的配置,不知是否可行,但也意味着,每个项目的docker配置都要加这种文件卷。

目前,env支持以下几个值(大小写不敏感):

DEV: Development environment

FAT: Feature Acceptance Test environment

UAT: User Acceptance Test environment

PRO: Production environment

更多环境定义,可以参考Env.java

(3)、引入相关jar

Maven项目:

直接引入apollo-client依赖

com.ctrip.framework.apollo

apollo-client

0.11.0-SNAPSHOT

普通java项目:

可以将编译后的jar直接丢进项目的lib目录。可以在maven私服里找到后下载,注意是com.ctrip.framework.apollo下个apollo-client,以及client依赖的apollo-core和其他的一些工具jar,具体如下图:

5f2dd557daaac6823c67e6a0b95bef9f.png

到此,客户端的配置就完成了。

配置的使用

原来就使用spring的情况下,大部分是不用改什么。

本地缓存路径

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径默认位于以下路径,所以请确保/opt/data或C:\opt\data\目录存在,且应用有读写权限。

Mac/Linux: /opt/data/{appId}/config-cache

Windows: C:\opt\data\{appId}\config-cache

本地配置文件会以下面的文件名格式放置于本地缓存路径下:

{appId}+{cluster}+{namespace}.properties

appId就是应用自己的appId,如100004458

cluster就是应用使用的集群,一般在本地模式下没有做过配置的话,就是default

namespace就是应用使用的配置namespace,一般是application

文件内容以properties格式存储,比如如果有两个key,一个是request.timeout,另一个是batch,那么文件内容就是如下格式:

request.timeout=2000

batch=2000

启动项目看下能否将配置文件从配置中心拉下来.

如果能拉下来则配置就成功了,不能则需检查前面的配置。

需要注意的一点是:

当类上使用@Configuration注解,则一定要注解@EnableApolloConfig一起使用,才可以生效。

就是说,所有需要在应用初始化之前获取变量的类上,都要加上此注解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaAPI 对 Docker 的系列操作可以通过 Docker Java 客户来实现。这个客户提供了对 Docker REST API 的封装,以便于 Java 开发人员使用。 以下是一些常见的 Docker 操作及其对应的 JavaAPI: 1. 创建一个容器 ```java DockerClient dockerClient = DefaultDockerClient.fromEnv().build(); HostConfig hostConfig = HostConfig.builder().build(); ContainerConfig containerConfig = ContainerConfig.builder() .hostConfig(hostConfig) .image("nginx") .build(); ContainerCreation containerCreation = dockerClient.createContainer(containerConfig); ``` 2. 启动一个容器 ```java dockerClient.startContainer(containerCreation.id()); ``` 3. 停止一个容器 ```java dockerClient.stopContainer(containerCreation.id(), 5); ``` 4. 删除一个容器 ```java dockerClient.removeContainer(containerCreation.id()); ``` 5. 列出所有容器 ```java List<Container> containers = dockerClient.listContainers(); ``` 6. 检查容器状态 ```java ContainerInfo containerInfo = dockerClient.inspectContainer(containerCreation.id()); ``` 7. 构建镜像 ```java File baseDir = new File("path/to/dockerfile"); BuildImageResultCallback callback = new BuildImageResultCallback(); dockerClient.buildImageCmd(baseDir).exec(callback); callback.awaitImageId(); ``` 8. 删除镜像 ```java dockerClient.removeImage("imageId"); ``` 9. 列出所有镜像 ```java List<Image> images = dockerClient.listImages(); ``` 以上是一些常用的 Docker 操作及其对应的 JavaAPI。使用 Docker Java 客户可以方便地在 Java 应用程序进行 Docker 的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值