docker-compose部署apollo 2.2.0
- 创建文件夹
mkdir -p /app/docker/apollo
- 最终目录结构如下:
tree
.
├── docker-compose.yml
└── sql
├── 01-apolloconfigdb.sql
├── 02-apolloconfigdb.sql
├── 03-init-user.sql
└── 04-init-eureka-url.sql
2 directories, 5 files
- 01-apolloconfigdb.sql 文件内容
services:
apollo-db:
image: mariadb:10.11
container_name: apollo-db
environment:
MYSQL_ROOT_PASSWORD: xoopooth4gie6doo5Aechieteev9genu
MYSQL_USER: apollo
MYSQL_PASSWORD: apollo123
volumes:
- ./sql:/docker-entrypoint-initdb.d
- db_data:/var/lib/mysql
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-uapollo", "-papollo123", "--silent"]
interval: 5s
timeout: 10s
retries: 10
apollo-configservice:
image: apolloconfig/apollo-configservice:2.2.0
container_name: apollo-configservice
depends_on:
apollo-db:
condition: service_healthy
environment:
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
SPRING_DATASOURCE_USERNAME: apollo
SPRING_DATASOURCE_PASSWORD: apollo123
EUREKA_INSTANCE_HOSTNAME: apollo-configservice
EUREKA_INSTANCE_IP_ADDRESS: apollo-configservice
EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE: http://apollo-configservice:8080/eureka/
EUREKA_SERVER_ENABLE_SELF_PRESERVATION: "false"
EUREKA_SERVER_EVICTION_INTERVAL_TIMER_IN_MS: "5000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 5
apollo-adminservice:
image: apolloconfig/apollo-adminservice:2.2.0
container_name: apollo-adminservice
depends_on:
apollo-configservice:
condition: service_healthy
environment:
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
SPRING_DATASOURCE_USERNAME: apollo
SPRING_DATASOURCE_PASSWORD: apollo123
EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE: http://apollo-configservice:8080/eureka/
EUREKA_INSTANCE_HOSTNAME: apollo-adminservice
EUREKA_INSTANCE_IP_ADDRESS: apollo-adminservice
EUREKA_CLIENT_REGISTER_WITH_EUREKA: "true"
EUREKA_CLIENT_FETCH_REGISTRY: "true"
# 显式覆盖所有可能的配置键(不同大小写和格式)
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://apollo-configservice:8080/eureka/
SPRING_CLOUD_CONFIG_ENABLED: "false" # 禁用配置服务器覆盖
SPRING_APPLICATION_JSON: '{"eureka":{"client":{"serviceUrl":{"defaultZone":"http://apollo-configservice:8080/eureka/"}}}}' # 最高优先级
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/health"]
interval: 30s
timeout: 10s
retries: 5
apollo-portal:
image: apolloconfig/apollo-portal:2.2.0
container_name: apollo-portal
depends_on:
apollo-configservice:
condition: service_healthy
environment:
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
SPRING_DATASOURCE_URL: jdbc:mysql://apollo-db:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
SPRING_DATASOURCE_USERNAME: apollo
SPRING_DATASOURCE_PASSWORD: apollo123
APOLLO_PORTAL_ENVS: dev
DEV_META: http://apollo-configservice:8080
PRO_META: http://apollo-configservice:8080
APOLLO_CONFIG_SERVICE: http://apollo-configservice:8080
ports:
- "8070:8070"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8070/health"]
interval: 30s
timeout: 10s
retries: 5
networks:
- nginx_ngu_network #此处是为了加入已经创建好的nginx网络中.用于nginx代理.可选
- default
networks:
nginx_ngu_network:
external: true
volumes:
db_data:
- sql/01-apolloconfigdb.sql
下载文件 https://github.com/apolloconfig/apollo/blob/master/scripts/sql/profiles/mysql-default/apolloconfigdb.sql
- sql/02-apolloconfigdb.sql
下载文件 https://github.com/apolloconfig/apollo/blob/master/scripts/sql/profiles/mysql-default/apolloportaldb.sql
- sql/03-init-user.sql
CREATE USER IF NOT EXISTS 'apollo'@'%' IDENTIFIED BY 'apollo123';
GRANT ALL PRIVILEGES ON ApolloConfigDB.* TO 'apollo'@'%';
GRANT ALL PRIVILEGES ON ApolloPortalDB.* TO 'apollo'@'%';
FLUSH PRIVILEGES
- sql/04-init-eureka-url.sql
非常重要. apollo 2.2.0版本. apollo-adminservice默认的注册中心是http://localhost:8080/eureka/,启动后总是无法找到正常的apollo-configservice.用执行初始化sql的办法修改
UPDATE `ApolloConfigDB`.`ServerConfig`
SET `Value` = 'http://apollo-configservice:8080/eureka/'
WHERE `Key` = 'eureka.service.url';
- 启动
docekr-compose up -d
- 访问 http://localhost:8070
默认登录账户 apollo/admin, 尽快修改密码