免费做简单网站,自助建站 源码,wordpress 图文展示,管理世界之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 nacos 镜像, 所以就尝试的安装了下, 亲测可用: 一. docker-compose.yml 编写
请确保自己的 mysql 服务已经启动了, 并且允许远程连接
volumes 挂载目录需要换成自己的目录 二. 容器运行和网络组
2.1 查看容器运行情况 … 之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 nacos 镜像, 所以就尝试的安装了下, 亲测可用: 一. docker-compose.yml 编写
请确保自己的 mysql 服务已经启动了, 并且允许远程连接
volumes 挂载目录需要换成自己的目录 二. 容器运行和网络组
2.1 查看容器运行情况
docker ps | grep nacos 然后使用 http://localhost:8848/nacos/# 可以登录到 nacos 运维控制台 2.2 查看容器网络组
使用 docker network ls 查看所有的 docker 网络组
使用 docker inspect nacos_default ls 可以查看 nacos 的网络信息, 可以看到
网络模式为 : bridge
容器ip为 : 172.22.0.2 三. 和mysql通信
由于我们的 docker-compose.yml 文件中指定的数据源是 mysql
3.1 查看 mysql 的运行情况(docker安装) 3.2 查看 mysql 的网络组以及容器ip
由于 172.19.0.2 是 mysql 容器内 ip, 并且使用的桥接模式, 所以 nacos 没办法使用这个 ip 和 mysql 通信 3.3 docker网络隔离
测试 nacos 容器内部和 mysql 通信, 可以发现无法 ping 通, 因为默认下, 2个不通网络组的容器是没办法互相通信的, 两个容器处于隔离的网络环境中, 这种隔离是 Docker 网络的默认行为, 旨在提供网络安全和隔离 3.4 解决方式
3.4.1 方式1(将两个容器链接到同一个网络组)
可以创建一个自定义网络并将两个容器都连接到这个网络上, 这样它们将能够使用分配给它们的容器内部 IP 地址互相通信, 这可以通过以下 Docker 命令完成
my_custom_network 这个只是网络组名称, 可以随意起名
括号里换成, 对应的你的宿主机查看到的容器id
# 创建一个自定义桥接网络
docker network create --driver bridge my_custom_network# 连接 MySQL 容器到这个网络
docker network connect my_custom_network (容器id或容器名)# 连接 Nacos 容器到这个网络
docker network connect my_custom_network (容器id或容器名)实际操作:
3.4.1.1 创建桥接模式的网络组并查看网络组 docker network create --driver bridge my_custom_network 3.4.1.2 链接nacos容器和mysql容器到该网络组
使用如下命令把2个容器连接到刚才创建的 my_custom_network 网络组 docker network connect my_custom_network 52e9e9ff94aa
docker network connect my_custom_network 5c2614366917
52e9e9ff94aa 和 5c2614366917 是 nacos / mysql 的容器 id
之后使用 docker inspect my_custom_network 查看刚才创建的网络组下面的容器 ip, 可以发现之前不在同一个网络组的 nacos 和 mysql, 现在在同一个网络组下面 我们再次进去 nacos 容器测试 ping mysql 的 ip, 可以发现, 直接 ping mysql-server (容器名称)就可以 ping 通 或使用docker-compose 把 mysql, nacos 编排带同一个网络组下面, 可以发现, 2个服务都指定了 networks: - nacos-network
这样容器启动的时候, 会把他们划分到同一个网络组里面, 可以直接只用容器内的 ip 通信
version: 3.8 # 使用 Docker Compose 文件版本 3.8services:mysql:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: rootpassword # 设置 MySQL root 用户的密码MYSQL_DATABASE: nacos_db # 创建一个数据库用于 NacosMYSQL_USER: nacos_user # 创建 MySQL 用户MYSQL_PASSWORD: nacos_password # 设置 MySQL 用户密码ports:- 3306:3306networks:- nacos-networknacos:image: nacos/nacos-server:latestdepends_on:- mysqlenvironment:SPRING_DATASOURCE_PLATFORM: mysqlMYSQL_SERVICE_HOST: mysqlMYSQL_SERVICE_DB_NAME: nacos_dbMYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_USER: nacos_userMYSQL_SERVICE_PASSWORD: nacos_passwordports:- 8848:8848networks:- nacos-networknetworks:nacos-network:driver: bridge3.4.2 方式二(在宿主机上查看 docker 为我们划分的 bridge100 网段) 修改 nccos 的 application.yml 配置文件, 修改 db.url.0 的数据库连接地址ip为 192.168.64.1 附上完整的 nacos .application.yml 配置文件:
#spring
server.servlet.contextPath/nacos
server.contextPath/nacos
server.port8848
server.tomcat.accesslog.max-days30
server.tomcat.accesslog.pattern%h %l %u %t %r %s %b %D %{User-Agent}i %{Request-Source}ispring.datasource.platformmysqlnacos.cmdb.dumpTaskInterval3600
nacos.cmdb.eventTaskInterval10
nacos.cmdb.labelTaskInterval300
nacos.cmdb.loadDataAtStartfalsedb.num1
# 使用 bridge100 这个网络下的ip地址
db.url.0jdbc:mysql://192.168.64.1:3306/nacos_config
db.userroot
db.passwordroot123### The auth system to use, currently only nacos and ldap is supported:
nacos.core.auth.system.type${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.typenacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled${TOMCAT_ACCESSLOG_ENABLED:false}
# default current work dir
server.tomcat.basedirfile:.
## spring security config
### turn off security
nacos.security.ignore.urls${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabledfalse
management.metrics.export.influx.enabledfalse
nacos.naming.distro.taskDispatchThreadCount10
nacos.naming.distro.taskDispatchPeriod200
nacos.naming.distro.batchSyncKeyCount1000
nacos.naming.distro.initDataRatio0.9
nacos.naming.distro.syncRetryDelay5000
nacos.naming.data.warmuptrue