首页 > 数据库 >使用 Docker 部署 Nacos 并配置 MySQL 数据源

使用 Docker 部署 Nacos 并配置 MySQL 数据源

时间:2024-03-02 11:34:40浏览次数:87  
标签:容器 -- 数据源 nacos Nacos MySQL docker

前言
在安装 Nacos 之前,请确保你已经准备好了一个运行中的 MySQL 数据库。本教程将指导您如何使用 Docker 在单机模式下部署 Nacos,并将其数据持久化到 MySQL 中。

步骤一:拉取 Nacos 镜像
拉取最新版本的 Nacos Server 镜像,也可以指定特定版本:

docker pull nacos/nacos-server

如果你想拉取特定版本,例如 v2.2.0,则执行:

docker pull nacos/nacos-server:v2.2.0

步骤二:创建并挂载目录
在宿主机上创建两个目录用于日志和配置文件映射:

mkdir -p /mydata/nacos/logs/
mkdir -p /mydata/nacos/conf/

注意:这些目录将作为数据卷挂载到容器内部,使得我们可以在宿主机直接修改相关文件。

步骤三:临时启动并复制文件
启动一个临时的 Nacos 容器以便从容器内复制配置文件至宿主机:
docker run -d --name nacos-temp -p 8848:8848 nacos/nacos-server

将容器内的配置文件和日志文件复制到宿主机对应的目录:
docker cp nacos-temp:/home/nacos/logs/ /mydata/nacos/
docker cp nacos-temp:/home/nacos/conf/ /mydata/nacos/

关闭并移除临时容器:
docker rm -f nacos-temp

步骤四:在 MySQL 中创建 Nacos 所需表结构
在 MySQL 中新建数据库 nacos-config(或其他自定义名称),然后从 Nacos GitHub 仓库 中找到并执行创建表结构的 SQL 脚本。

步骤五:正式启动 Nacos 并设置环境变量
以下命令用于启动一个带有持久化配置且连接了 MySQL 数据库的 Nacos 容器:

docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e DB_NUM=1 \
-e DB_URL_0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC \
-e DB_USER=root \
-e DB_PASSWORD=root \
-v /mydata/nacos/logs/:/home/nacos/logs \
-v /mydata/nacos/conf/:/home/nacos/conf \
--restart=always \
nacos/nacos-server

命令参数说明:

-d 表示以守护进程模式运行容器。
-p 参数用于端口映射。
--privileged=true 提升容器权限。
-e 设置环境变量,包括 JVM 内存大小、运行模式以及 MySQL 数据库连接信息。
-v 挂载数据卷。
网络与防火墙设置
确保宿主机的防火墙规则允许访问 Nacos 相关端口(8848, 9848 和 9849)。对于 Linux 系统,可以使用以下命令:

firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --permanent --add-port=9848/tcp
firewall-cmd --permanent --add-port=9849/tcp
firewall-cmd --reload
systemctl restart docker # 重启 Docker 服务以确保新规则生效

配置文件修改
编辑宿主机上的 Nacos 配置文件以指向你的 MySQL 实例:

vim /mydata/nacos/conf/application.properties

更新如下配置项:

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

验证配置是否正确映射到容器内:

docker exec -it nacos /bin/bash
cat /home/nacos/conf/application.properties
exit

访问 Nacos 控制台
当所有步骤完成后,现在可以通过浏览器访问 Nacos 控制台:

http://<ip>:8848/nacos/index.html

请将 <ip> 替换为实际服务器 IP 地址或本地回环地址 127.0.0.1。

请注意,上述步骤基于截至撰写本文时的最佳实践,具体操作时,请参照最新的官方文档及 Docker 镜像标签进行调整。同时,务必检查挂载目录映射的正确性,确保应用配置能够成功写入容器

标签:容器,--,数据源,nacos,Nacos,MySQL,docker
From: https://www.cnblogs.com/zhyp/p/18048430

相关文章

  • MySQL查看执行过的SQL语句
    更新记录点击查看2024年3月2日发布。开启和关闭日志记录(临时)默认情况下mysql是不会记录最近执行sql语句的,需要手动开启才能记录。另外sql语句有两种方式记录,记录到table,记录到文件。另外开启日志记录多少会占用性能,适合开发测试环境使用。--临时设置,重启MySQL服务失效......
  • MySQL-开启binlog
    要在MySQL中开启二进制日志(Binlog),可以按照以下步骤操作:打开MySQL配置文件my.cnf。该文件通常位于/etc/my.cnf、/etc/mysql/my.cnf或者/usr/local/mysql/my.cnf。查找并编辑[mysqld]部分的内容。如果没有这个部分,则添加以下行到文件末尾:[mysqld]。在[......
  • MySQL如何查看/监控/处理账号密码过期问题
    MySQL8.0.x中,我们如果按安全规范配置了账号密码过期策略的话,那么如何查看账号密码还有多长时间就会过期;如何做好账号密码过期监控;以及提前及时处理账号密码过期问题就是DBA必须处理的一些事情。这里简单讨论一下这些事情。个人经验仅供参考,如有不足或错误的地方,敬请指正一二。这......
  • 数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性​!
    体验地址:https://developer.aliyun.com/topic/march/polardbserverless本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDBMySQLServerless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开......
  • Nacos和Gateway的职责
    Nacos:服务注册、发现和配置中心Nacos是为微服务架构设计的一款服务注册与发现中心和配置中心。它提供了服务注册、服务发现、服务健康检查、动态配置管理等功能,能够方便地实现微服务的注册和发现。同时,Nacos提供了丰富的高级特性,如流量管理、动态路由、灰度发布等,能够满足不同场景......
  • mysql8的sql_mode不起作用
    如果sql_mode似乎没有起作用,可能是由以下几个原因造成的:配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置。对于Windows系统,这通常是MySQL安装目录下的bin文件夹。对于Linux系统,它可能位于/etc/mysql/、/etc/my.cnf或~/.my.cnf等位置。MySQL服务未重启:对......
  • MySQL 事务
    MySQL事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。事务处......
  • MySQL ALTER命令
    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQLALTER命令。开始本章教程前让我们先创建一张表,表名为:testalter_tbl。root@host#mysql-uroot-ppassword;Enterpassword:mysql>useW3CSCHOOL;Databasechangedmysql>createtabletestalter_tbl->......
  • MySQL 索引
    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索......
  • MySQL 及 SQL 注入
    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执......