m1系列芯片aarch64架构使用docker-compose安装nacos
之前看到 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.8
services:
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: rootpassword # 设置 MySQL root 用户的密码
MYSQL_DATABASE: nacos_db # 创建一个数据库用于 Nacos
MYSQL_USER: nacos_user # 创建 MySQL 用户
MYSQL_PASSWORD: nacos_password # 设置 MySQL 用户密码
ports:
- "3306:3306"
networks:
- nacos-network
nacos:
image: nacos/nacos-server:latest
depends_on:
- mysql
environment:
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_DB_NAME: nacos_db
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_USER: nacos_user
MYSQL_SERVICE_PASSWORD: nacos_password
ports:
- "8848:8848"
networks:
- nacos-network
networks:
nacos-network:
driver: bridge
3.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.port=8848
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
spring.datasource.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
# 使用 bridge100 这个网络下的ip地址
db.url.0=jdbc:mysql://192.168.64.1:3306/nacos_config
db.user=root
db.password=root123
### 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.type=nacos
### 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.basedir=file:.
## 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.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
更多推荐
所有评论(0)