Docker 精简安装 Nacos 2.2.1 单机版本

准备工作:

        1)已安装docker

        2)数据库准备,演示使用MySql5.7.38版本

1、拉取

[root@Tseng-HW ~]# docker pull nacos/nacos-server:v2.2.1
v2.2.1: Pulling from nacos/nacos-server
2d473b07cdd5: Already exists 
77c5a601c050: Pull complete 
5fce895ad971: Pull complete 
86555f63872e: Pull complete 
801400643684: Pull complete 
e63e427570f7: Pull complete 
4343e9b5093f: Pull complete 
61845c2b228d: Pull complete 
520260df9bc4: Pull complete 
4f4fb700ef54: Pull complete 
Digest: sha256:7300018322cadf17e8f00256197b361559efa6ab52a101ad52fbcd4f775dc057
Status: Downloaded newer image for nacos/nacos-server:v2.2.1
docker.io/nacos/nacos-server:v2.2.1
[root@Tseng-HW ~]#

2、创建挂载目录

[root@Tseng-HW ~]# mkdir -p /data/nacos/conf
[root@Tseng-HW ~]# mkdir -p /data/nacos/logs
[root@Tseng-HW ~]# mkdir -p /data/nacos/data

3、启动nacos,复制配置文件到挂载目录,备份配置文件、删除启动的nacos

[root@Tseng-HW ~]# docker run --name nacos221 -d -p 8848:8848 -e MODE=standalone  nacos/nacos-server:v2.2.1
5d9eecf4f9b5b5f138483fc711f4a4194b0d9d6d69ede4ad0a06e1fd711ee521
[root@Tseng-HW ~]# docker cp nacos221:/home/nacos/conf/ /data/nacos/
[root@Tseng-HW ~]# docker cp nacos221:/home/nacos/logs/ /data/nacos/
[root@Tseng-HW ~]# docker cp nacos221:/home/nacos/data/ /data/nacos/
[root@Tseng-HW ~]# cd /data/nacos/conf/
[root@Tseng-HW conf]# ls
1.4.0-ipv6_support-update.sql  application.properties  derby-schema.sql  mysql-schema.sql  nacos-logback.xml
[root@Tseng-HW conf]# cp application.properties application_bk.properties
[root@Tseng-HW conf]# docker stop 5d9e
5d9e
[root@Tseng-HW conf]# docker rm 5d9e

4、创建数据库、执行数据库脚本,数据库脚本两个路径

        1)配置文件中:/data/nacos/conf 下的  mysql-schema.sql 文件

[root@Tseng-HW ~]# cd /data/nacos/conf/
[root@Tseng-HW conf]# ls
1.4.0-ipv6_support-update.sql  application_bk.properties  application.properties  derby-schema.sql  mysql-schema.sql  nacos-logback.xml
[root@Tseng-HW conf]#

        2)GitHub地址

https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sqlicon-default.png?t=N7T8https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql        3)创建数据库,执行脚本"mysql-schema.sql"

        4)5.7.32-log(阿里云MySql) 执行SQL 报错:Index column size too large. The maximum column size is 767 bytes

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(512) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
[Err] 1709 - Index column size too large. The maximum column size is 767 bytes.

      快速解决方案,更改“resource”的长度

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(150) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

resource字段的长度为512,对于使用UTF-8字符集的MySQL数据库来说,每个字符占用3个字节,因此512个字符的resource字段加上其他列的长度可能会超过InnoDB引擎默认的最大键长度767字节。

要解决这个问题,你可以尝试以下几种方法:

  1. 减少resource字段的长度: 根据你的实际需求,考虑是否可以减少resource字段的长度。

  2. 更改MySQL的配置: 你可以在MySQL配置文件(my.cnf或my.ini)中增加以下行来更改InnoDB的页面大小,从而增加键的最大长度:

innodb_page_size=65536

innodb_file_format=Barracuda

innodb_large_prefix=on

        然后重启MySQL服务。注意,这种方法可能需要你重新创建数据库和表。

        3. 使用前缀索引: 如果你不需要在完整的resource字段上进行搜索,可以改为在resource字段的前几个字符上创建唯一索引:

CREATE TABLE permissions (
	role VARCHAR ( 50 ) NOT NULL,
	resource VARCHAR ( 512 ) NOT NULL,
	action VARCHAR ( 8 ) NOT NULL,
	resource_prefix VARCHAR ( 100 ) NOT NULL DEFAULT SUBSTRING_INDEX( resource, '/', 1 ),
CONSTRAINT uk_role_permission UNIQUE ( role, resource_prefix, action ) 
);

在这个例子中,我们创建了一个新的字段resource_prefix,它是resource字段的第一个子字符串,用'/'作为分隔符。然后在(role, resource_prefix, action)上创建唯一索引。

5、修改配置文件:application.properties;注意替换数据库的地址、端口、数据库名称、用户名、密码

# 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
server.tomcat.accesslog.enabled=false
# 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=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
# 注意替换数据库的地址、端口、数据库名称、用户名、密码
db.url.0=jdbc:mysql://****:3308/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user.0=*****
db.password.0=*****
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos

# 是否开启鉴权功能,默认为false
nacos.core.auth.enabled=true

### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds: 用户登陆临时accessToken的过期时间
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token: Base64加密前密码  TcmxJw05k$-_zcx.)8EtFC^D^F1W!IPr  加密网站:https://www.qqxiuzi.cn/bianma/base64.htm
nacos.core.auth.plugin.nacos.token.secret.key=VGNteEp3MDVrJC1femN4Lik4RXRGQ15EXkYxVyFJUHI=
### 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}
# 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false
# 用于替换useragent白名单的身份识别key,不可为空,2.2.1后无默认值
nacos.core.auth.server.identity.key=nacosKey
# 用于替换useragent白名单的身份识别value,不可为空,2.2.1后无默认值
nacos.core.auth.server.identity.value=nacosValue
## 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

6、启动nacos

[root@Tseng-HW conf]# docker run -d --name nacos221 --ip 外网/内网IP地址 -p 8848:8848 -p 9848:9848 -p 9849:9849 --restart=always -e jvm_ms=2048m -m 2048m --env MODE=standalone --env NACOS_AUTH_ENABLE=true -v /data/nacos/conf/:/home/nacos/conf -v /data/nacos/logs:/home/nacos/logs -v /data/nacos/data:/home/nacos/data nacos/nacos-server:v2.2.1

         启动说明

docker run -d --name nacos221 \                       -d 表示运行在后台,--name 指定名称为nacos221,我这里安装了多个版本的
--ip ***.***.***.*** \                                访问的IP 地址
-p 8848:8848 \                                        前者为暴露给外部访问的端口,后者为nacos容器端口
-p 9848:9848 \                                        9848是nacos2.0.0版本以上必须要加上端口映射
-p 9849:9849 \                                        9849是nacos2.0.0版本以上必须要加上端口映射
--restart=always                                      Docker 重启时,容器自动启动
-e jvm_ms=2048m                                       限制jvm  2G
-m 2048m                                              限制内存 2G
--env MODE=standalone \                               nacos以单机版启动,默认为cluster(集群)
--env NACOS_AUTH_ENABLE=true \                        如果使用官方镜像,请在启动docker容器时,添加如下环境变量
-v /data/docker/nacos/conf/:/home/nacos/conf \        nacos 配置文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /data/docker/nacos/logs:/home/nacos/logs \         nacos 日志文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /data/nacos/data:/home/nacos/data \                nacos 数据文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
nacos/nacos-server:v2.2.1                             指定 docker nacos 版本,这里是2.2.1版本

7、配置服务器安全组端口,访问:IP地址:8848/nacos ,用户名/密码:nacos/nacos 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤在Docker安装Nacos单机版: 1. 首先,确保已经安装DockerDocker Compose。如果没有安装Docker Compose,可以参考中的链接进行安装。 2. 创建Nacos的挂载目录和文件。执行以下命令: ``` mkdir -p /usr/docker/data/nacos/logs/ mkdir -p /usr/docker/data/nacos/init.d/ touch /usr/docker/data/nacos/init.d/custom.properties vim /usr/docker/data/nacos/init.d/custom.properties ``` 在打开的文件中,根据需要修改配置文件。 3. 创建一个docker-compose.yml文件,并将以下内容复制到文件中: ``` version: '3' services: nacos: image: nacos/nacos-server:latest container_name: nacos ports: - "8848:8848" volumes: - /usr/docker/data/nacos/logs/:/home/nacos/logs - /usr/docker/data/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties ``` 4. 在终端中,进入包含docker-compose.yml文件的目录,并执行以下命令启动Nacos: ``` docker-compose up -d ``` 5. 等待一段时间,Nacos容器将启动并运行。您可以通过访问http://localhost:8848/nacos 来访问Nacos控制台。 请注意,以上步骤仅展示了在Docker安装Nacos单机版的基本步骤,具体的配置和使用方法可以参考和中的链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker安装Nacos单机版)](https://blog.csdn.net/qq_34497272/article/details/107129287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [docker 安装 nacos(单机版)](https://blog.csdn.net/oschina_40730821/article/details/105770142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Nacos系列(一)docker安装单机nacos服务](https://blog.csdn.net/csdn_20150804/article/details/117296075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值