Nacos Docker 部署
以下内容整理自我自己在部署过程中的笔记,因此很多铺垫性质的内容东西没提或者没有细说,可以参考官方主页/ github 仓库的文档。
官方文档
Dokcer Hub
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server:2.0.2
当然这样运行肯定应该也是跑得起来的,但是其实背后有很多配置内容。我还没具体去看源码还不清楚默认的配置是什么,而且在我已经用 docker 起了一个 mysql 容器的情况下我倾向于把 nacos 连到我自己起的数据库上。
Nacos 主页
nacos-docker/README_ZH.md at master · nacos-group/nacos-docker (github.com)
官方页面关于 Docker 启动 nacos-server 其实简化了大量内容……一个写好的 docker compose yaml 文件,装好 docker compose 一行命令就能启动了,配置项、mysql 、两个容器之间的网络打通……通通不用考虑。
只是研究使用的话这样启动一个就好,挺舒服的(不用像我一样被官方文档的简略和语焉不详折磨),但是一方面我比较想多摸索一点,另一方面我已经起了一个 mysql 的容器,没必要再让它起一个 mysql (毕竟买的云服务器资源也有限)。
网络教程
网络上找到的相关教程一般都会提到映射配置文件(和日志目录)至宿主机,官方的 github 文档也提到这个特性,但是在某次提交中被删除线了,也没有对应说明。所以不太清楚是这个特性新版本被移除了 / 还是 @Deprecated 了 / 还是不建议使用
这次部署我还是选择了把配置用环境变量打进去。
最终
启动 nacos
启动命令如下
docker run --name nacos \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST={{MYSQL_CONTAINER_NAME}} \
-e MYSQL_SERVICE_DB_NAME={{DB_NAME}} \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER={{USER}} \
-e MYSQL_SERVICE_PASSWORD={{PASSWORD}} \
-p 8848:8848 \
-d nacos/nacos-server
具体环境变量含义(及默认值)上面官方文档或者去 nacos-docker 的 github 看,在这里就不当二传手了,况且这里用到的环境变量名也挺直白。
nacos & mysql 网络打通
如果像上面一样启动了 nacos (当然 mysql 也要启动好),会发现输入相关地址还是无法访问。google/bing 了半天也没找到解决方案,最后还是自己进容器读日志发现的问题(所以说求人不如求己)。
因为是在 nacos 和 mysql 物理上是分别在两个 container 里,首先如果使用 localhost/127.0.0.1 nacos 肯定是连不到 mysql 的。需要使用 mysql 所在的 container 所在的 内部 ip 。但是感觉这样很麻烦也不够优雅,所以可以通过 docker network
命令创建桥接网络,这样就能够使用容器名 DNS 解析到对应容器 ip 了。
关于 Docker 的桥接网络具体的细节暂时也没去深入了解,只是简单查了下进行了配置:
docker network create mysql-net
# 创建桥接网络 mysql-net
docker network connect mysql-net mysql
# 容器 mysql 连入 mysql-net
docker network connect mysql-net nacos
# 同上,nacos
docker network inspect mysql-net
# 配置完后容器运行起来使用该命令查看该桥接网络下容器信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY