Apollo 1.9.2
IP分配
| 用途 | IP地址 | 环境 |
|---|---|---|
| portal | 172.28.0.2:9000 | |
| adminService、configService | configService 172.28.0.5:8060 adminService 172.28.0.3:8090 | DEV |
| adminService、configService | configService 172.28.0.6:8060 adminService 172.28.0.4:8090 | QASA |
| 数据库 | 172.16.130.31:3307 | ApolloConfigDB_DEV |
| 数据库 | 172.16.130.31:3307 | ApolloConfigDB_QASA |
| 数据库 | 172.16.130.31:3307 | ApolloPortalDB |
修改apollo-adminservice和apollo-configservice的application.yml配置
1. 配置路径apollo-adminservice/src/main/resources/application.yml
2. 配置路径apollo-configservice/src/main/resources/application.yml
spring:
application:
name: apollo-adminservice
profiles:
active: ${apollo_profile}
cloud:
consul:
enabled: false
#######新增配置start###########
inetutils:
ignoredInterfaces:
- docker0
- veth.*
#######新增配置end###########
eureka:
instance:
hostname: ${hostname:localhost}
ip-address: ${eureka.instance.ip-address} #新增
修改复制scripts/build.sh为scripts/build_dev.sh,修改数据库地址和meta server地址
# apollo config db info
apollo_config_db_url='jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_DEV?characterEncoding=utf8'
apollo_config_db_username='root'
apollo_config_db_password='root'
# apollo portal db info
apollo_portal_db_url='jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_DEV?characterEncoding=utf8'
apollo_portal_db_username='root'
apollo_portal_db_password='root'
dev_meta=http://172.28.0.5:8080
fat_meta=http://172.28.0.6:8080
META_SERVERS_OPTS="-Ddev_meta=$dev_meta -Dfat_meta=$fat_meta"
执行构建脚本
$ sh scripts/build_dev.sh
复制scripts/sql/apolloconfigdb.sql为两份,apolloconfigdb_dev.sql和apolloconfigdb_qasa.sql。修改完之后执行脚本
1. DEV数据库(修改数据库名和metaserver地址)
CREATE DATABASE IF NOT EXISTS ApolloConfigDB_DEV DEFAULT CHARACTER SET = utf8mb4;
Use ApolloConfigDB_DEV;
eureka.service.url 修改为http://172.28.0.5:8060/eureka/
2. FAT数据库(修改数据库名和metaserver地址)
CREATE DATABASE IF NOT EXISTS ApolloConfigDB_QASA DEFAULT CHARACTER SET = utf8mb4;
Use ApolloConfigDB_QASA;
eureka.service.url 修改为 http://172.28.0.6:8060/eureka/
3. 修改scripts/sql/apolloportaldb.sql中的meta.server地址
apollo.portal.meta.servers为{"DEV":"http://172.28.0.5:8060","FAT":"http://172.28.0.6:8060"}
apollo.portal.envs 修改为dev,fat
adminService的Dockerfile
FROM registry.cn-beijing.aliyuncs.com/jannal/centos7.9-jdk8:1.0.0
USER root
ENV PACKAGE_FILE=apollo-adminservice-1.9.2-github.zip
COPY ${PACKAGE_FILE} /root/install/
WORKDIR /root/install
ENV APOLLO_RUN_MODE "Docker"
RUN yum makecache \
&& yum -y install unzip nc \
&& yum clean all \
&& unzip ${PACKAGE_FILE} -d /usr/local/apollo-adminservice \
&& chmod 755 -R /usr/local/apollo-adminservice \
&& rm -rf /root/install/*
WORKDIR /usr/local/apollo-adminservice
CMD sh /usr/local/apollo-adminservice/scripts/startup.sh
configservice的Dockerfile
FROM registry.cn-beijing.aliyuncs.com/jannal/centos7.9-jdk8:1.0.0
USER root
ENV PACKAGE_FILE=apollo-configservice-1.9.2-github.zip
COPY ${PACKAGE_FILE} /root/install/
WORKDIR /root/install
ENV APOLLO_RUN_MODE "Docker"
RUN yum makecache \
&& yum -y install unzip \
&& yum clean all \
&& unzip ${PACKAGE_FILE} -d /usr/local/apollo-configservice \
&& chmod 755 -R /usr/local/apollo-configservice \
&& rm -rf /root/install/*
WORKDIR /usr/local/apollo-configservice
CMD sh /usr/local/apollo-configservice/scripts/startup.sh
portal的Dockerfile
FROM registry.cn-beijing.aliyuncs.com/jannal/centos7.9-jdk8:1.0.0
USER root
ENV PACKAGE_FILE=apollo-portal-1.9.2-github.zip
COPY ${PACKAGE_FILE} /root/install/
WORKDIR /root/install
ENV APOLLO_RUN_MODE "Docker"
RUN yum makecache \
&& yum -y install unzip \
&& yum clean all \
&& unzip ${PACKAGE_FILE} -d /usr/local/apollo-portal \
&& chmod 755 -R /usr/local/apollo-portal \
&& rm -rf /root/install/*
WORKDIR /usr/local/apollo-portal
CMD sh /usr/local/apollo-portal/scripts/startup.sh
构建脚本
#!/usr/bin/env bash
IMAGE_NAME=apollo-adminservice
VERSION=1.9.2
docker build . -t registry.cn-beijing.aliyuncs.com/jannal/${IMAGE_NAME}:${VERSION}
IMAGE_NAME=apollo-configservice
VERSION=1.9.2
docker build . -t registry.cn-beijing.aliyuncs.com/jannal/${IMAGE_NAME}:${VERSION}
IMAGE_NAME=apollo-portal
VERSION=1.9.2
docker build . -t registry.cn-beijing.aliyuncs.com/jannal/${IMAGE_NAME}:${VERSION}
创建一系列文件夹和文件,最终的目录结构
$ tree
├── README.MD
├── apollo-adminservice
│ ├── Dockerfile
│ ├── build.sh
│ └── scripts
│ └── startup.sh
├── apollo-configservice
│ ├── Dockerfile
│ ├── build.sh
│ └── scripts
│ └── startup.sh
├── apollo-portal
│ ├── Dockerfile
│ ├── build.sh
│ ├── config
│ │ └── apollo-env.properties
│ └── scripts
│ └── startup.sh
├── docker-compose.yaml
├── docker-start.sh
基于上面的目录结构,修改apollo-adminservice/scripts/startup.sh。也可以添加一些JVM参数
SERVER_PORT=${SERVER_PORT:=8090}
基于上面的目录结构,修改apollo-configservice/scripts/startup.sh
SERVER_PORT=${SERVER_PORT:=8060}
export JAVA_OPTS="-Deureka.client.fetch-registry=false"
基于上面的目录结构,修改apollo-portal/scripts/startup.sh
SERVER_PORT=${SERVER_PORT:=9000}
基于上面的目录结构,修改apollo-portal/config/apollo-env.properties
local.meta=http://localhost:8060
dev.meta=http://172.28.0.5:8060
fat.meta=http://172.28.0.6:8060
docker-compose.yaml文件.这里一定要注意加上APOLLO_RUN_MODE=Docker,否则启动脚本不是前台执行,也可以直接在startup.sh里添加
# APOLLO_RUN_MODE需要开启才能前台运行
version: "3"
services:
apollo-adminservice-dev:
image : registry.cn-beijing.aliyuncs.com/jannal/apollo-adminservice:1.9.2
container_name: apollo-adminservice-dev
volumes:
- "./apollo-adminservice/scripts/startup.sh:/usr/local/apollo-adminservice/scripts/startup.sh:rw"
- "./logs/apollo-adminservice-dev/:/opt/logs/100003172/:rw"
depends_on:
- apollo-configservice-dev
ports:
- "8090:8090"
command: >
/bin/bash -c '
sleep 60;
echo "sleep over";
/usr/local/apollo-adminservice/scripts/startup.sh
'
hostname: apollo-adminservice-dev
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_DEV?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- eureka.instance.ip-address=172.28.0.3
- APOLLO_RUN_MODE=Docker
extra_hosts:
- "apollo-adminservice-dev:172.28.0.3"
- "apollo-adminservice-qasa:172.28.0.4"
- "apollo-configservice-dev:172.28.0.5"
- "apollo-configservice-qasa:172.28.0.6"
networks:
apollo-net:
ipv4_address: 172.28.0.3
restart: always
apollo-adminservice-qasa:
image : registry.cn-beijing.aliyuncs.com/jannal/apollo-adminservice:1.9.2
container_name: apollo-adminservice-qasa
volumes:
- "./apollo-adminservice/scripts/startup.sh:/usr/local/apollo-adminservice/scripts/startup.sh:rw"
- "./logs/apollo-adminservice-qasa/:/opt/logs/100003172/:rw"
depends_on:
- apollo-configservice-qasa
ports:
- "8091:8090"
command: >
/bin/bash -c '
sleep 60;
echo "sleep over";
/usr/local/apollo-adminservice/scripts/startup.sh
'
hostname: apollo-adminservice-qasa
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_QASA?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- eureka.instance.ip-address=172.28.0.4
- APOLLO_RUN_MODE=Docker
extra_hosts:
- "apollo-adminservice-dev:172.28.0.3"
- "apollo-adminservice-qasa:172.28.0.4"
- "apollo-configservice-dev:172.28.0.5"
- "apollo-configservice-qasa:172.28.0.6"
networks:
apollo-net:
ipv4_address: 172.28.0.4
restart: always
apollo-configservice-dev:
image : registry.cn-beijing.aliyuncs.com/jannal/apollo-configservice:1.9.2
container_name: apollo-configservice-dev
volumes:
- "./apollo-configservice/scripts/startup.sh:/usr/local/apollo-configservice/scripts/startup.sh:rw"
- "./logs/apollo-configservice-dev/:/opt/logs/100003171/:rw"
ports:
- "8060:8060"
hostname: apollo-configservice-dev
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_DEV?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- eureka.instance.ip-address=172.28.0.5
- APOLLO_RUN_MODE=Docker
extra_hosts:
- "apollo-adminservice-dev:172.28.0.3"
- "apollo-adminservice-qasa:172.28.0.4"
- "apollo-configservice-dev:172.28.0.5"
- "apollo-configservice-qasa:172.28.0.6"
networks:
apollo-net:
ipv4_address: 172.28.0.5
restart: always
apollo-configservice-qasa:
image : registry.cn-beijing.aliyuncs.com/jannal/apollo-configservice:1.9.2
container_name: apollo-configservice-qasa
volumes:
- "./apollo-configservice/scripts/startup.sh:/usr/local/apollo-configservice/scripts/startup.sh:rw"
- "./logs/apollo-configservice-qasa/:/opt/logs/100003171/:rw"
ports:
- "8061:8060"
hostname: apollo-configservice-qasa
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.117.33:3307/ApolloConfigDB_QASA?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- eureka.instance.ip-address=172.28.0.6
- APOLLO_RUN_MODE=Docker
extra_hosts:
- "apollo-adminservice-dev:172.28.0.3"
- "apollo-adminservice-qasa:172.28.0.4"
- "apollo-configservice-dev:172.28.0.5"
- "apollo-configservice-qasa:172.28.0.6"
networks:
apollo-net:
ipv4_address: 172.28.0.6
restart: always
apollo-portal:
image : registry.cn-beijing.aliyuncs.com/jannal/apollo-portal:1.9.2
container_name: apollo-portal
volumes:
- "./apollo-portal/config/apollo-env.properties:/usr/local/apollo-portal/config/apollo-env.properties:rw"
- "./apollo-portal/scripts/startup.sh:/usr/local/apollo-portal/scripts/startup.sh:rw"
- "./logs/apollo-portal:/opt/logs/100003173/:rw"
depends_on:
- apollo-adminservice-dev
- apollo-adminservice-qasa
- apollo-configservice-dev
- apollo-configservice-qasa
ports:
- "9000:9000"
command: >
/bin/bash -c '
sleep 120;
echo "sleep over";
/usr/local/apollo-portal/scripts/startup.sh
'
hostname: apollo-portal
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.117.33:3307/ApolloPortalDB?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- APOLLO_RUN_MODE=Docker
extra_hosts:
- "apollo-adminservice-dev:172.28.0.3"
- "apollo-adminservice-qasa:172.28.0.4"
- "apollo-configservice-dev:172.28.0.5"
- "apollo-configservice-qasa:172.28.0.6"
networks:
apollo-net:
ipv4_address: 172.28.0.2
restart: always
# docker network create --subnet=172.28.0.0/16 apollo-net
networks:
apollo-net:
external:
name: apollo-net
运行
$ docker network create --subnet=172.28.0.0/16 apollo-net
$ docker-compose up -d
访问http://172.28.0.2:9000/system_info.html查看环境是否正常


