> 技术文档 > mac系统使用docker搭建nacos(亲测有效)_mac安装nacos

mac系统使用docker搭建nacos(亲测有效)_mac安装nacos

由于本地部署nacos一直报错,报缺少某个rocksdb的文件,所以找到了使用docker部署nacos的办法。

文章目录

    • 环境介绍
    • 以下是部署nacos的步骤
      • 第一步:安装docker
      • 第二步 使用docker下载nacos
        • 1.打开mac终端,打开docker软件。
        • 2.由于公司网络无法使用docker自带的github地址下载nacos,所以使用aliyun的镜像下载nacos,执行下面命令
        • 3.部署nacos过程,执行下述命令,里面的变量需要更换到自己电脑的路径。参考地址(Docker 部署 Nacos)
        • 5.执行下述命令,启动nacos
      • 踩坑记录
        • 1.报no database set
        • 2.电脑更换ip后,启动nacos失败

环境介绍

mac的版本:Apple M4,nacos版本:2.1.1,mysql版本8.0

以下是部署nacos的步骤

第一步:安装docker

这个比较简单,到docker官网下载,地址:https://www.docker.com/products/docker-desktop/

我的电脑是apple芯片,所以选择第一个下载,下载完之后直接安装。
mac系统使用docker搭建nacos(亲测有效)_mac安装nacos

第二步 使用docker下载nacos

1.打开mac终端,打开docker软件。
2.由于公司网络无法使用docker自带的github地址下载nacos,所以使用aliyun的镜像下载nacos,执行下面命令:
docker pull nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.1.1
3.部署nacos过程,执行下述命令,里面的变量需要更换到自己电脑的路径。参考地址(Docker 部署 Nacos)
# mac系统查看文件夹目录命令:pwd# 创建目录mkdir -p /{电脑需要存储的地址}/nacos/{conf,logs,data}# 创建容器docker run -p 8848:8848 --name nacos -d nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.1.1# 拷贝文件docker cp nacos:/home/nacos/conf /{电脑需要存储的地址}/nacosdocker cp nacos:/home/nacos/data /{电脑需要存储的地址}/nacosdocker cp nacos:/home/nacos/logs /{电脑需要存储的地址}/nacos# 授权文件chmod 777 /{电脑需要存储的地址}/nacos/{conf,logs,data}# 删除容器docker rm -f nacos

4.接下来,本地需要搭建mysql8.0服务,已搭建好的话,需要新建一个数据库(库名自定义),并执行下面的sql(也就是第三步中存储的{电脑需要存储的地址}/nacos/config中的schema.sql)

/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the \"License\"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an \"AS IS\" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */CREATE SCHEMA nacos AUTHORIZATION nacos;CREATE TABLE config_info ( id bigint NOT NULL generated by default as identity, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) default \'\', app_name varchar(128), content CLOB, md5 varchar(32) DEFAULT NULL, gmt_create timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', gmt_modified timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', src_user varchar(128) DEFAULT NULL, src_ip varchar(50) DEFAULT NULL, c_desc varchar(256) DEFAULT NULL, c_use varchar(64) DEFAULT NULL, effect varchar(64) DEFAULT NULL, type varchar(64) DEFAULT NULL, c_schema LONG VARCHAR DEFAULT NULL, encrypted_data_key LONG VARCHAR DEFAULT NULL, constraint configinfo_id_key PRIMARY KEY (id), constraint uk_configinfo_datagrouptenant UNIQUE (data_id,group_id,tenant_id));CREATE INDEX configinfo_dataid_key_idx ON config_info(data_id);CREATE INDEX configinfo_groupid_key_idx ON config_info(group_id);CREATE INDEX configinfo_dataid_group_key_idx ON config_info(data_id, group_id);CREATE TABLE his_config_info ( id bigint NOT NULL, nid bigint NOT NULL generated by default as identity, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) default \'\', app_name varchar(128), content CLOB, md5 varchar(32) DEFAULT NULL, gmt_create timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00.000\', gmt_modified timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00.000\', src_user varchar(128), src_ip varchar(50) DEFAULT NULL, op_type char(10) DEFAULT NULL, encrypted_data_key LONG VARCHAR DEFAULT NULL, constraint hisconfiginfo_nid_key PRIMARY KEY (nid));CREATE INDEX hisconfiginfo_dataid_key_idx ON his_config_info(data_id);CREATE INDEX hisconfiginfo_gmt_create_idx ON his_config_info(gmt_create);CREATE INDEX hisconfiginfo_gmt_modified_idx ON his_config_info(gmt_modified);CREATE TABLE config_info_beta ( id bigint NOT NULL generated by default as identity, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) default \'\', app_name varchar(128), content CLOB, beta_ips varchar(1024), md5 varchar(32) DEFAULT NULL, gmt_create timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', gmt_modified timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', src_user varchar(128), src_ip varchar(50) DEFAULT NULL, encrypted_data_key LONG VARCHAR DEFAULT NULL, constraint configinfobeta_id_key PRIMARY KEY (id), constraint uk_configinfobeta_datagrouptenant UNIQUE (data_id,group_id,tenant_id));CREATE TABLE config_info_tag ( id bigint NOT NULL generated by default as identity, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) default \'\', tag_id varchar(128) NOT NULL, app_name varchar(128), content CLOB, md5 varchar(32) DEFAULT NULL, gmt_create timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', gmt_modified timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', src_user varchar(128), src_ip varchar(50) DEFAULT NULL, constraint configinfotag_id_key PRIMARY KEY (id), constraint uk_configinfotag_datagrouptenanttag UNIQUE (data_id,group_id,tenant_id,tag_id));CREATE TABLE config_info_aggr ( id bigint NOT NULL generated by default as identity, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) default \'\', datum_id varchar(255) NOT NULL, app_name varchar(128), content CLOB, gmt_modified timestamp NOT NULL DEFAULT \'2010-05-05 00:00:00\', constraint configinfoaggr_id_key PRIMARY KEY (id), constraint uk_configinfoaggr_datagrouptenantdatum UNIQUE (data_id,group_id,tenant_id,datum_id));CREATE TABLE app_list ( id bigint NOT NULL generated by default as identity, app_name varchar(128) NOT NULL, is_dynamic_collect_disabled smallint DEFAULT 0, last_sub_info_collected_time timestamp DEFAULT \'1970-01-01 08:00:00.0\', sub_info_lock_owner varchar(128), sub_info_lock_time timestamp DEFAULT \'1970-01-01 08:00:00.0\', constraint applist_id_key PRIMARY KEY (id), constraint uk_appname UNIQUE (app_name));CREATE TABLE app_configdata_relation_subs ( id bigint NOT NULL generated by default as identity, app_name varchar(128) NOT NULL, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, gmt_modified timestamp DEFAULT \'2010-05-05 00:00:00\', constraint configdatarelationsubs_id_key PRIMARY KEY (id), constraint uk_app_sub_config_datagroup UNIQUE (app_name, data_id, group_id));CREATE TABLE app_configdata_relation_pubs ( id bigint NOT NULL generated by default as identity, app_name varchar(128) NOT NULL, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, gmt_modified timestamp DEFAULT \'2010-05-05 00:00:00\', constraint configdatarelationpubs_id_key PRIMARY KEY (id), constraint uk_app_pub_config_datagroup UNIQUE (app_name, data_id, group_id));CREATE TABLE config_tags_relation ( id bigint NOT NULL, tag_name varchar(128) NOT NULL, tag_type varchar(64) DEFAULT NULL, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, tenant_id varchar(128) DEFAULT \'\', nid bigint NOT NULL generated by default as identity, constraint config_tags_id_key PRIMARY KEY (nid), constraint uk_configtagrelation_configidtag UNIQUE (id, tag_name, tag_type));CREATE INDEX config_tags_tenant_id_idx ON config_tags_relation(tenant_id);CREATE TABLE group_capacity ( id bigint NOT NULL generated by default as identity, group_id varchar(128) DEFAULT \'\', quota int DEFAULT 0, usage int DEFAULT 0, max_size int DEFAULT 0, max_aggr_count int DEFAULT 0, max_aggr_size int DEFAULT 0, max_history_count int DEFAULT 0, gmt_create timestamp DEFAULT \'2010-05-05 00:00:00\', gmt_modified timestamp DEFAULT \'2010-05-05 00:00:00\', constraint group_capacity_id_key PRIMARY KEY (id), constraint uk_group_id UNIQUE (group_id));CREATE TABLE tenant_capacity ( id bigint NOT NULL generated by default as identity, tenant_id varchar(128) DEFAULT \'\', quota int DEFAULT 0, usage int DEFAULT 0, max_size int DEFAULT 0, max_aggr_count int DEFAULT 0, max_aggr_size int DEFAULT 0, max_history_count int DEFAULT 0, gmt_create timestamp DEFAULT \'2010-05-05 00:00:00\', gmt_modified timestamp DEFAULT \'2010-05-05 00:00:00\', constraint tenant_capacity_id_key PRIMARY KEY (id), constraint uk_tenant_id UNIQUE (tenant_id));CREATE TABLE tenant_info ( id bigint NOT NULL generated by default as identity, kp varchar(128) NOT NULL, tenant_id varchar(128) DEFAULT \'\', tenant_name varchar(128) DEFAULT \'\', tenant_desc varchar(256) DEFAULT NULL, create_source varchar(32) DEFAULT NULL, gmt_create bigint NOT NULL, gmt_modified bigint NOT NULL, constraint tenant_info_id_key PRIMARY KEY (id), constraint uk_tenant_info_kptenantid UNIQUE (kp,tenant_id));CREATE INDEX tenant_info_tenant_id_idx ON tenant_info(tenant_id);CREATE TABLE users (username varchar(50) NOT NULL PRIMARY KEY,password varchar(500) NOT NULL,enabled boolean NOT NULL DEFAULT true);CREATE TABLE roles (username varchar(50) NOT NULL,role varchar(50) NOT NULL,constraint uk_username_role UNIQUE (username,role));CREATE TABLE permissions ( role varchar(50) NOT NULL, resource varchar(512) NOT NULL, action varchar(8) NOT NULL, constraint uk_role_permission UNIQUE (role,resource,action));INSERT INTO users (username, password, enabled) VALUES (\'nacos\', \'$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu\', TRUE);INSERT INTO roles (username, role) VALUES (\'nacos\', \'ROLE_ADMIN\');/******************************************//* ipv6 support *//******************************************/ALTER TABLE `config_info_tag`MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\' AFTER `src_user`;ALTER TABLE `his_config_info`MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL AFTER `src_user`;ALTER TABLE `config_info`MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\' AFTER `src_user`;ALTER TABLE `config_info_beta`MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT \'source ip\' AFTER `src_user`;

我这边创建的库如下:
mac系统使用docker搭建nacos(亲测有效)_mac安装nacos

5.执行下述命令,启动nacos
  • 注意 :MYSQL_SERVICE_HOST必须要是本机ip地址,不能是localhost或者127.0.0.1
docker run -d \\-e MODE=standalone \\--privileged=true \\-e SPRING_DATASOURCE_PLATFORM=mysql \\-e MYSQL_SERVICE_HOST={本机IP地址} \\-e MYSQL_SERVICE_PORT=3306 \\-e MYSQL_SERVICE_USER=root \\-e MYSQL_SERVICE_PASSWORD=123456 \\-e MYSQL_SERVICE_DB_NAME=nacos \\-e TIME_ZONE=\'Asia/Shanghai\' \\-e NACOS_AUTH_ENABLE=true \\-v /{电脑需要存储的地址}/nacos/logs:/home/nacos/logs \\-v /{电脑需要存储的地址}/nacos/data:/home/nacos/data \\-v /{电脑需要存储的地址}/nacos/conf:/home/nacos/conf \\-p 8848:8848 -p 9848:9848 -p 9849:9849 \\--name nacos --restart=always nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.1.1

执行完毕之后,nacos就启动了,在docker页面可以看到启动日志
mac系统使用docker搭建nacos(亲测有效)_mac安装nacos

踩坑记录

1.报no database set

这种情况一般是自己的数据库没有设置正确,一开始我在执行下面命令时:

docker run -d \\-e MODE=standalone \\--privileged=true \\-e SPRING_DATASOURCE_PLATFORM=mysql \\-e MYSQL_SERVICE_HOST={本机IP地址} \\-e MYSQL_SERVICE_PORT=3306 \\-e MYSQL_SERVICE_USER={数据库用户名} \\-e MYSQL_SERVICE_PASSWORD={数据库密码} \\-e MYSQL_SERVICE_DB_NAME=nacos \\-e TIME_ZONE=\'Asia/Shanghai\' \\-e NACOS_AUTH_ENABLE=true \\-v /{电脑需要存储的地址}/nacos/logs:/home/nacos/logs \\-v /{电脑需要存储的地址}/nacos/data:/home/nacos/data \\-v /{电脑需要存储的地址}/nacos/conf:/home/nacos/conf \\-p 8848:8848 -p 9848:9848 -p 9849:9849 \\--name nacos --restart=always nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.1.1

MYSQL_SERVICE_HOST值写的是localhost,导致一直失败,后来改成电脑的ip地址就可以了。

2.电脑更换ip后,启动nacos失败

比如今天没有在公司办公,而是在家办公,导致电脑ip更换了,之后启动nacos会报:no database set
解决办法:
先把之前的nacos容器删掉,
然后更改启动命令中的地址:MYSQL_SERVICE_HOST
之后再通过终端重新执行启动nacos的命令,即可。