修改日期 | 修改人 | 备注 |
2021-06-11 15:29:28[当前版本] | 郑伟 | 其他原因... |
2021-06-11 13:42:06 | 郑伟 | 格式调整 |
2021-06-11 11:56:15 | 郑伟 | 格式调整 |
2021-06-11 11:54:18 | 郑伟 | 创建版本 |
docker run -d -p 3306:3306 --name mysql --restart always \ -v /data/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=Renfang@123# \ -e MYSQL_ROOT_HOST=% \ -e TZ=Asia/Shanghai \ mysql \ --lower_case_table_names=1 # 进入mysql的docker容器内部 docker exec -it mysql bash # 以root身份进入mysql mysql -u root -p #输入root用户密码 #添加root远程登录,并设置远程登录密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Renfang@123#'; #刷新权限 FLUSH PRIVILEGES;
下载 sql脚本 后,将其中 apolloconfigdb.sql 和 apolloportaldb.sql 导入mysql创建Apollo相关的数据库
将 apolloconfigdb 中的 serverconfig 里面的 eureka.service.url 字段值改为当前部署的地址
http://apollo-configservice:8080/eureka/,http://apollo-adminservice:8090/eureka/
将 apolloportaldb 中的 serverconfig 里面的 apollo.portal.envs 字段值改为当前需要部署的环境,示例中使用 dev
# 下载apollo相关镜像 docker pull apolloconfig/apollo-configservice docker pull apolloconfig/apollo-adminservice docker pull apolloconfig/apollo-portal
!!!注意修改以下数据库的IP地址!!!
# 运行容器 docker service create --name apollo-configservice --publish 8080:8080 \ --network cssz \ -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.199.120:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=Renfang@123# \ -e SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 \ -e SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.* \ -e EUREKA_INSTANCE_IP_ADDRESS=apollo-configservice \ apolloconfig/apollo-configservice docker service create --name apollo-adminservice --publish 8090:8090 \ --network cssz \ -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.199.120:3306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=Renfang@123# \ -e SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 \ -e SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.* \ -e EUREKA_INSTANCE_IP_ADDRESS=apollo-adminservice \ apolloconfig/apollo-adminservice docker service create --name apollo-portal --publish 8070:8070 \ --network cssz \ -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.199.120:3306/ApolloPortalDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=Renfang@123# \ -e APOLLO_PORTAL_ENVS=dev\ -e DEV_META=http://apollo-configservice:8080 \ apolloconfig/apollo-portal
# 查看日志 docker service logs apollo-configservice docker service logs apollo-adminservice docker service logs apollo-portal # 删除apollo docker service rm apollo-configservice docker service rm apollo-adminservice docker service rm apollo-portal
using System; using System.IO; using Com.Ctrip.Framework.Apollo; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) { //此处使用多环境切换appsettings.json,便于开发、测试、生产环境切换使用不同的apollo地址 var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var configBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true); if (!string.IsNullOrWhiteSpace(environmentName)) { configBuilder = configBuilder.AddJsonFile($"appsettings.{environmentName}.json", optional: true); } var config = configBuilder.AddApollo(configBuilder.Build().GetSection("apollo")) .AddDefault() //针对各子系统,使用各自私有的命名空间,如果添加的类型为json文件,需要指定 .AddNamespace("muster", Com.Ctrip.Framework.Apollo.Enums.ConfigFileFormat.Json) .Build(); return WebHost.CreateDefaultBuilder(args) .UseKestrel() .UseUrls(config["server.urls"].Split(';')) .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup<Startup>(); } }
{ "apollo": { "AppId": "cssz", "MetaServer": "http://apollo-configservice:8080" //本地开发时,如果apollo部署在docker集群中,需要指定ConfigServer //以下地址为nginx反向代理地址,代理到docker集群中apollo相关服务端口 "ConfigServer": [ "http://192.168.199.8:8080" ] }, "RedisHost": "192.168.199.10:6379", "RedisPassWord": "root", "RedisDefaultKey": "Muster" } //配置文件中仍保留redis相关配置,是因为redis辅助类在程序运行时,直接读取的appsettings.json文件中的配置,未使用注入方式注入IConfiguration类
Apollo 分布式部署指南 网络策略 .NET Core微服务之基于Apollo实现统一配置中心