Docker安装 Nacos 单机超详细教程(配合宝塔)
一、事前准备
CentOs系统,安装了宝塔面板,安装了docker
,云平台防火墙里开放8848
端口, 官网地址
宝塔-安全放行8848端口
记得使用firewall-cmd --list-port
查看一下linux有没有开放nacos的8848端口,未开启的需要在宝塔里开启或通过命令行开启。
当前我的是开放了8848端口,如果小伙伴没有开放呢,可以使用开启,–permanent表示永久有效,如果不加当前命令,表示重启后就不生效了。宝塔开启也是可以的。
firewall-cmd --zone=public --add-port=8848/tcp --permanent
开放后记得重启防火墙
firewall-cmd --reload
二、安装
1、镜像仓库中拉取最新版本
https://hub.docker.com/r/nacos/nacos-server
docker pull nacos/nacos-server
2、创建日志文件夹
mkdir -p /home/nacos/logs/
3、创建配置文件夹
mkdir -p /home/nacos/init.d/
4、nacos数据库导入
宿主机的mysql
新建nacos
的数据库,并执行脚本 sql脚本地址如下:
https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
5、运行nacos
docker run \
--name nacos -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=JTbMMN8k4rHh3N8z \
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \
nacos/nacos-server
解读
docker 启动容器
docker run \
容器名称叫nacos -d后台运行
--name nacos -d \
nacos默认端口8848 映射到外部端口8848
-p 8848:8848 \
naocs 应该是2.0版本以后就需要一下的两个端口 所以也需要开放
-p 9848:9848
-p 9849:9849
--privileged=true \
docker重启时 nacos也一并重启
--restart=always \
-e 配置 启动参数
配置 jvm
-e JVM_XMS=256m
-e JVM_XMX=256m \
单机模式
-e MODE=standalone
-e PREFER_HOST_MODE=hostname \
数据库是mysql 配置持久化 不使用nacos自带的数据库
-e SPRING_DATASOURCE_PLATFORM=mysql \
写自己的数据库地址
-e MYSQL_SERVICE_HOST=###### \
数据库端口号
-e MYSQL_SERVICE_PORT=3306 \
mysql的数据库名称
-e MYSQL_SERVICE_DB_NAME=nacos \
mysql的账号密码
-e MYSQL_SERVICE_USER=root
-e MYSQL_SERVICE_PASSWORD=root \
-v 映射docker内部的文件到docker外部 我这里将nacos的日志 数据 以及配置文件 映射出来
映射日志
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
映射配置文件 (应该没用了 因为前面已经配置参数了)
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \
映射nacos的本地数据 也没啥用因为使用了mysql
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \
启动镜像名称
nacos/nacos-server
三、常见问题
1、数据库配置
如果数据库是rds这种公网可以访问的数据库,直接写就可以
如果数据库在宿主机
docker里面的代码生成的数据需要写入到宿主机的Mysql
服务器上,想要用本地的数据库测试自己的代码正确性,项目程序安装在docker容器中,于是必定要在docker容器里访问到本地的数据库。
(1)在docker容器里localhost并不是指宿主机的localhost,因此不能在容器中通过localhost:3306访问到宿主机的mysql,也不可以通过127.0.0.1访问。
(2)docker在运行时就建立了虚拟网卡,并命名为docker0,可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信。
[root@VM-8-15-centos ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:53ff:fed0:4c11 prefixlen 64 scopeid 0x20<link>
ether 02:42:53:d0:4c:11 txqueuelen 0 (Ethernet)
RX packets 4489 bytes 6944799 (6.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3379 bytes 999348 (975.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(3)宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.17.0.1),因此,可以在容器里通过172.17.0.1:3306访问到宿主机的mysql服务器。
mysql服务器默认的设置为允许127.0.0.1段的ip地址访问
如果用172.17.0.1:3306仍然无法访问到宿主机的话,需要设置一下mysql的访问权限:
如果用的是宝塔面板,可以给nacos这个数据库设置权限为所有人
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "12345678" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息
2、如何查看是否安装成功
1)安装后访问地址,有登录页面就是安装成功了,默认用户名和密码都是nacos
http://XXX.XXX.XXX.XXX:8848/nacos
2)宝塔面板点击左侧docker点击右侧nacos的日志来看是否正确运行,如果正确运行后是有如下字样的
2022-12-15 09:46:53,339 INFO Nacos started successfully in stand alone mode. use external storage
2022-12-15 09:47:15,057 INFO Initializing Servlet 'dispatcherServlet'
2022-12-15 09:47:15,090 INFO Completed initialization in 32 ms
3)日志提示成功,无法访问
首先需要排查的就是端口,腾讯云阿里云的端口是否打开?宝塔面板或防火墙的端口是否打开?
其次需要排查的就是数据库是否正确。
3)日志提示成功,无法访问
首先需要排查的就是端口,腾讯云阿里云的端口是否打开?宝塔面板或防火墙的端口是否打开?
其次需要排查的就是数据库是否正确。
疯狂的KMakise: 跟着做还是无法访问到管理页面,端口都开放了
多敲代码: No input file specified.
CSDN-Ada助手: 不知道 MySQL入门 技能树是否可以帮到你:https://edu.csdn.net/skill/mysql?utm_source=AI_act_mysql
bamboo_007: 赞赞赞!!!有用!!!
若水印象: 没有哦,我也是之前尝试研究了下用宝塔配合docker安装的nacos,你可以多搜搜的,比如利用supervision