简介
Nacos 是一个轻量级的服务发现、配置管理和服务管理平台,它支持多种语言(Java、Go、Node.js 等)和多种协议(HTTP、gRPC、DNS 等),能够帮助开发者构建微服务体系结构,简化了应用程序在不同环境中的部署和维护。本文中,我们将介绍如何使用 Docker 启动并安装 Nacos。
安装 Docker
首先,需要安装 Docker。可以通过官方网站下载适合自己操作系统版本的 Docker,并按照其指导进行安装。参考以往文章
下载Nacos镜像
搜索相关镜像:
[root@localhost ~]# docker search nacos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nacos/nacos-server This project contains a Docker image meant t… 419 [OK]
nacos/nacos-peer-finder-plugin scale plugin for nacos k8s 2
nacos/nacos-mysql-master nacos-mysql-master 6
nacos/nacos-mysql-slave 1
nacos/nacos-mysql 7
nacos/nacos-operator 3
paderlol/nacos Nacos-quick-start-https://nacos.io/en-us/doc… 5
jude95/nacos-server-mysql8 nacos with mysql8 0
lizexiong/nacos 0
zhusaidong/nacos-server-m1 Nacos Server for Apple MacOS M1 18
tanyi/nacos-server nacos-server官方包制作而成的镜像 1
dockerlishijie/nacos-server 0
king019/nacos 2
loads/nacos-server 0
centralx/nacos-server Multi CPU architectures support for nacos/na… 0
nacosta/redis 0
nacosta/node-5.5.0-base 0
wuyfeedocker/nacos-ci nacos-docker-test 0
nacosta/nodejs 0
tonychen0716/nacos-server Multi-arch image for Alibaba Nacos 0
chenfengwei/nacos nacos服务镜像,nacos版本1.3.2,同时兼任arm64… 3
eduosi/nacos-server 0
paderlol/nacos-mysql-master 0
paderlol/nacos-mysql-slave 0
lijiahao1995/nacos 0
下载镜像,这会从 Docker Hub 上下载最新版本的 Nacos 镜像文件到你的本地机器上。
[root@localhost ~]# docker pull nacos/nacos-server
启动 Nacos 容器
步骤 1:创建容器网络
在启动 Nacos 容器之前,需要先创建一个容器网络,以便容器之间可以相互访问和通信。可以使用以下命令创建一个名为 nacos_network 的容器网络:
[root@localhost ~]# docker network create nacos_network
741f1399c358bd18eca6f89faaaf97a25409123829b4c67e0119e8a118074fcd
步骤 2:启动 Nacos 容器
接下来使用以下命令启动 Nacos 容器:
[root@localhost ~]# docker run --name nacos -d \
-p 8848:8848 \
--network nacos_network \
-e MODE=standalone \
nacos/nacos-server
395b63593c2f0eeea4666efbbec481efd4a982e60f3387852144930e0ccd7f9c
这个命令会启动一个名为 nacos 的容器,并将其绑定到本地机器的 8848 端口。同时,它还会将容器添加到之前创建的 nacos_network 容器网络中,并设置容器模式为 standalone。
步骤 3:访问 Nacos Web
启动完 Nacos 容器后,就可以通过 http://192.168.56.100:8848/nacos 访问 Nacos Web 控制台了。在控制台上,可以进行服务注册、配置管理和服务发现等操作。
注意:当前启动的nacos容器没有开启认证,生产或其他环境需要开启认证。参考网址:dockerhub
docker启动时增加启动参数即可。
步骤4:配置 Nacos 数据库
默认情况下,Nacos 使用内置的 Derby 数据库进行数据存储。虽然 Derby 是一个轻量级的数据库,但当数据量较大时,它可能会导致性能瓶颈和数据丢失的问题。因此,建议将 Nacos 数据库存储改为 MySQL 或 PostgreSQL 等外部数据库。
步骤 4.1:安装 MySQL 数据库
需要提前安装mysql数据库,可以参考以往的文章。docker 安装mysql
步骤 4.2:创建 Nacos 数据库和用户
安装完成 MySQL 后,需要创建一个新的数据库和用户,并授予其访问权限。可以使用以下命令创建一个名为 nacos 的数据库和用户:
mysql -u root -p
CREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nacos'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%';
FLUSH PRIVILEGES; EXIT;
这样,就创建了一个名为 nacos 的数据库和一个名为 nacos 的用户,并赋予它们访问权限。
执行脚本:
步骤 4.3:修改 Nacos 配置文件
在启动 Nacos 容器之前,需要修改配置文件以将 Nacos 数据库存储改为 MySQL。
首先,新建宿主机的文件目录
[root@localhost nacos]# pwd
/root/nacos
[root@localhost nacos]# ls
conf logs
[root@localhost nacos]#
[root@localhost nacos]# docker cp nacos:/home/nacos/logs/ /root/nacos/logs/
Preparing to copy...
Copying from container - 32.77kB
Copying from container - 65.54kB
Copying from container - 88.58kB
Successfully copied 88.58kB to /root/nacos/logs/
[root@localhost nacos]# docker cp nacos:/home/nacos/conf/ /root/nacos/conf/
Preparing to copy...
Copying from container - 32.77kB
Copying from container - 61.44kB
Successfully copied 61.44kB to /root/nacos/conf/
配置数据库链接
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_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
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://192.168.56.100:13306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=nacos
db.password.0=123456
### 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:}
### 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:}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
## 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
关闭并删除docker nacos
[root@localhost nacos]# docker stop nacos && docker rm nacos
nacos
nacos
步骤 4.4:重新启动容器
docker run --name nacos -d \
-p 8848:8848 \
-e MODE="standalone" \
-e SPRING_DATASOURCE_PLATFORM="mysql" \
-e MYSQL_SERVICE_HOST="192.168.56.100" \
-e MYSQL_SERVICE_PORT="13306" \
-e MYSQL_SERVICE_USER="root" \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_PASSWORD="my-secret-pw" \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false" \
-v /root/nacos/logs/logs:/home/nacos/logs \
-v /root/nacos/conf/conf/:/home/nacos/conf/ \
nacos/nacos-server
总结
本文介绍了如何使用 Docker 启动并安装 Nacos,并讲解了如何将 Nacos 数据库存储改为 MySQL。通过这些步骤,你可以轻松地在自己的机器上搭建起 Nacos 服务注册和配置管理平台,方便进行微服务应用程序开发和部署工作。