mac系統(tǒng)使用docker搭建nacos(親測(cè)有效)
由于本地部署nacos一直報(bào)錯(cuò),報(bào)缺少某個(gè)rocksdb的文件,所以找到了使用docker部署nacos的辦法。
環(huán)境介紹
mac的版本:Apple M4,nacos版本:2.1.1,mysql版本8.0
以下是部署nacos的步驟
第一步:安裝docker
這個(gè)比較簡(jiǎn)單,到docker官網(wǎng)下載,地址:https://www.docker.com/products/docker-desktop/
我的電腦是apple芯片,所以選擇第一個(gè)下載,下載完之后直接安裝。
第二步 使用docker下載nacos
1.打開(kāi)mac終端,打開(kāi)docker軟件。
2.由于公司網(wǎng)絡(luò)無(wú)法使用docker自帶的github地址下載nacos,所以使用aliyun的鏡像下載nacos,執(zhí)行下面命令:
docker pull nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.1.1
3.部署nacos過(guò)程,執(zhí)行下述命令,里面的變量需要更換到自己電腦的路徑。參考地址(Docker 部署 Nacos)
# mac系統(tǒng)查看文件夾目錄命令:pwd # 創(chuàng)建目錄 mkdir -p /{電腦需要存儲(chǔ)的地址}/nacos/{conf,logs,data} # 創(chuàng)建容器 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 /{電腦需要存儲(chǔ)的地址}/nacos docker cp nacos:/home/nacos/data /{電腦需要存儲(chǔ)的地址}/nacos docker cp nacos:/home/nacos/logs /{電腦需要存儲(chǔ)的地址}/nacos # 授權(quán)文件 chmod 777 /{電腦需要存儲(chǔ)的地址}/nacos/{conf,logs,data} # 刪除容器 docker rm -f nacos
4.接下來(lái),本地需要搭建mysql8.0服務(wù),已搭建好的話,需要新建一個(gè)數(shù)據(jù)庫(kù)(庫(kù)名自定義),并執(zhí)行下面的sql(也就是第三步中存儲(chǔ)的{電腦需要存儲(chǔ)的地址}/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`;
我這邊創(chuàng)建的庫(kù)如下:
5.執(zhí)行下述命令,啟動(dòng)nacos
注意 :MYSQL_SERVICE_HOST必須要是本機(jī)ip地址,不能是localhost或者127.0.0.1
docker run -d \ -e MODE=standalone \ --privileged=true \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST={本機(jī)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 /{電腦需要存儲(chǔ)的地址}/nacos/logs:/home/nacos/logs \ -v /{電腦需要存儲(chǔ)的地址}/nacos/data:/home/nacos/data \ -v /{電腦需要存儲(chǔ)的地址}/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
執(zhí)行完畢之后,nacos就啟動(dòng)了,在docker頁(yè)面可以看到啟動(dòng)日志
踩坑記錄
1.報(bào)no database set
這種情況一般是自己的數(shù)據(jù)庫(kù)沒(méi)有設(shè)置正確,一開(kāi)始我在執(zhí)行下面命令時(shí):
docker run -d \ -e MODE=standalone \ --privileged=true \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST={本機(jī)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 /{電腦需要存儲(chǔ)的地址}/nacos/logs:/home/nacos/logs \ -v /{電腦需要存儲(chǔ)的地址}/nacos/data:/home/nacos/data \ -v /{電腦需要存儲(chǔ)的地址}/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值寫(xiě)的是localhost,導(dǎo)致一直失敗,后來(lái)改成電腦的ip地址就可以了。
到此這篇關(guān)于mac系統(tǒng)使用docker搭建nacos(親測(cè)有效)的文章就介紹到這了,更多相關(guān)mac docker搭建nacos內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker?build與Dockerfile問(wèn)題
這篇文章主要介紹了docker?build與Dockerfile問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Docker安裝配置ES(elasticsearch)步驟詳解
這篇文章主要給大家介紹了關(guān)于Docker安裝配置ES(elasticsearch)的相關(guān)資料,本文主要介紹了如何在指定目錄下安裝ES和Kibana,以及如何用IK分詞器進(jìn)行分詞,需要的朋友可以參考下2024-10-10Docker本地部署Drupal并實(shí)現(xiàn)公網(wǎng)訪問(wèn)的詳細(xì)步驟
Drupal是使用PHP語(yǔ)言編寫(xiě)的開(kāi)源內(nèi)容管理框架(CMF),它由內(nèi)容管理系統(tǒng)(CMS)和PHP開(kāi)發(fā)框架(Framework)共同構(gòu)成,這篇文章主要給大家介紹了關(guān)于Docker本地部署Drupal并實(shí)現(xiàn)公網(wǎng)訪問(wèn)的詳細(xì)步驟,需要的朋友可以參考下2023-12-12docker部署高斯數(shù)據(jù)庫(kù)的詳細(xì)步驟
文章詳細(xì)介紹了如何在Docker中部署高斯數(shù)據(jù)庫(kù)(openGauss),包括安裝Docker、拉取鏡像、運(yùn)行容器、設(shè)置環(huán)境變量和掛載數(shù)據(jù)卷等步驟,還提供了連接和配置遠(yuǎn)程連接的指導(dǎo),感興趣的朋友一起看看吧2024-12-12如何解決安裝docker的yum工具時(shí)報(bào)錯(cuò)問(wèn)題
在安裝Docker時(shí)遇到y(tǒng)um工具錯(cuò)誤可通過(guò)更新yum源解決,先卸載舊Docker,備份原yum源,下載新的CentOS-Base.repo文件到指定目錄,安裝yum工具后,配置Docker的yum源,國(guó)內(nèi)用戶建議使用aliyun源以避免訪問(wèn)異常,安裝并啟動(dòng)Docker,校驗(yàn)是否成功2024-09-09Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)超詳細(xì)攻略
Docker倉(cāng)庫(kù)是集中存放鏡像的地方,分為公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù),這篇文章主要給大家介紹了關(guān)于Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08Docker使用Jumpserver搭建一個(gè)安全的堡壘機(jī)系統(tǒng)
堡壘機(jī)作為一種重要的安全工具,能夠有效地管理服務(wù)器訪問(wèn)權(quán)限,并提供會(huì)話審計(jì)功能,以保障系統(tǒng)的安全性和穩(wěn)定性,本文將介紹Jumpserver,并指導(dǎo)如何搭建和配置Jumpserver來(lái)實(shí)現(xiàn)安全的堡壘機(jī)管理,需要的朋友可以參考下2025-04-04SpringBoot 整合 Docker的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot 整合 Docker的詳細(xì)過(guò)程,本文通過(guò)一個(gè)簡(jiǎn)單的項(xiàng)目來(lái)給大家介紹整合的詳細(xì)過(guò)程,需要的朋友可以參考下2021-11-11