使用apollo最新的1.1版本:https://github.com/ctripcorp/apollo
docker部署时候会遇到注册中心ip的问题,解决如下2种方法:
1.直接指定要注册的IP,可以修改startup.sh,通过JVM System Property在运行时传入,如-Deureka.instance.ip-address=${指定的IP},或者也可以修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置
eureka: instance: ip-address: ${指定的IP}
2.部署的时候,apollo-configservice和apollo-adminservice需要把自己的IP和端口注册到Meta Server(apollo-configservice本身)。
Apollo客户端和Portal会从Meta Server获取服务的地址(IP+端口),然后通过服务地址直接访问。
所以如果实际部署的机器有多块网卡(如docker),或者存在某些网卡的IP是Apollo客户端和Portal无法访问的(如网络安全限制),那么我们就需要在apollo-configservice和apollo-adminservice中做相关限制以避免Eureka将这些网卡的IP注册到Meta Server。
如下面这个例子就是对于apollo-configservice,把docker0和veth.*的网卡在注册到Eureka时忽略掉。
spring: application: name: apollo-configservice profiles: active: ${apollo_profile} cloud: inetutils: ignoredInterfaces: - docker0 - veth.*
注意,对于application.yml修改时要小心,千万不要把其它信息改错了,如spring.application.name等。
修改apollo\scripts\build.bat中数据库地址和dev_meta地址
然后运行bat文件编译
新建三个目录文件,分别将上一步骤在\target目录中生成的.jar、.github.zip文件上传至服务器中 以及 \src\main\docker 目录中的Dockerfile文件
运行docker-compose-apollo.yml文件
docker-compose -f docker-compose-apollo.yml up
docker-compose-apollo.yml内容如下
version: "3" services: apollo-configservice: ##容器服务名 container_name: apollo-configservice ##容器名 build: apollo-configservice/ ##Dockerfile路径 image: apollo-configservice:1.1.0 ##镜像名 network_mode: host ##网络设置 ports: - "8080:8080" volumes: - "/docker/apollo/logs/100003171:/opt/logs/100003171" ##将/opt/logs/100003171目录挂载到宿主机的/docker/apollo/logs/100003171方便在宿主机上查看日志 environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password= apollo-adminservice: container_name: apollo-adminservice build: apollo-adminservice/ image: apollo-adminservice:1.1.0 network_mode: host #net: "host" ports: - "8090:8090" depends_on: - apollo-configservice volumes: - "/docker/apollo/logs/100003172:/opt/logs/100003172" environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password= apollo-portal: container_name: apollo-portal build: apollo-portal/ image: apollo-portal:1.1.0 network_mode: host #net: "host" ports: - "8070:8070" depends_on: - apollo-adminservice volumes: - "/docker/apollo/logs/100003173:/opt/logs/100003173" environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password=
启动之后,不会马上就有,输入top命令查看
这时候会看到有java 占用cpu 超过 100% 当运行完了就会显示正常(大概5分钟左右)。这时候输入 服务器ip:8070就会看到起好的项目