【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”

news2024/9/24 15:22:48

采用Docker容器进行部署和搭建Nacos服务以及“坑点”

  • Docker容器部署Nacos服务
    • 安装Docker
    • 下载Nacos镜像
      • docker-compose up部署
        • Derby 单机版部署
        • MySQL 单机版部署
          • 修改standalone-mysql.yaml
        • MySQL 集群模式部署
  • 初始化nacos数据库
    • Nacos服务的MySQL版本
      • 数据库脚本
        • 脚本内容
    • 手动创建Nacos容器
      • Linux
      • Docker参数介绍
      • MySQL参数介绍
      • mysql配置环境变量的环境变量文件
        • docker --env-file
        • 执行环境变量文件的脚本
      • 访问Nacos服务
      • 配置Nacos服务
      • 启动Nacos服务
      • 停止和删除容器
        • 停止容器
        • 删除容器
  • 总结

Docker容器部署Nacos服务

Docker容器是一种轻量级的虚拟化技术,可以将应用程序和其依赖项打包成一个可移植的容器,从而方便进行部署和管理。Nacos是一个开源的服务发现、配置管理和服务管理平台,可以帮助开发人员更好地管理微服务架构中的服务。本文将为您介绍如何使用Docker容器部署和搭建Nacos服务。

安装Docker

在开始之前,需要先安装Docker。Docker支持多种操作系统,包括Windows、Mac和Linux。可以在Docker官网上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。

下载Nacos镜像

您可以在Docker Hub上找到Nacos的官方镜像。使用以下命令即可从Docker Hub上下载Nacos镜像:

git clone https://github.com/nacos-group/nacos-docker.git

通过上面的指令,我们可以通过git下载仓库下面的官方的安装脚本。

cd nacos-docker
cp example/cluster-hostname.yaml example/my-cluster-hostname.yaml

docker-compose up部署

以下是针对总体脚本不同部署方式的说明:

  • 单机部署Derby方式:脚本会在一台机器上安装和配置所有组件,适合小型应用或测试环境。

  • 单机部署MySQL方式:脚本会在一台机器上安装和配置所有组件,适合小型应用或测试环境。

  • 分布式MySQL部署方式:脚本会在多台机器上分别安装和配置不同的组件,通过负载均衡将请求分发到不同的机器上。适合高可用和高性能应用。

在这里插入图片描述

Derby 单机版部署

你可以使用以下命令在单一主机上部署Derby数据库:

docker-compose -f example/standalone-derby.yaml up -d

MySQL 单机版部署

你可以使用以下命令在单一主机上部署MySQL 5.7:

docker-compose -f example/standalone-mysql-5.7.yaml up -d
修改standalone-mysql.yaml

注释掉mysql,prometheus,grafana(健康相关的暂时用不上)

version: "2"
services:
  nacos:
    image: nacos/nacos-server:latest
    container_name: nacos-standalone-mysql
    env_file:
      - ../env/nacos-standlone-mysql.env
    volumes:
      - ./standalone-logs/:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9555:9555"
    # depends_on:
    #   - mysql
    restart: on-failure
  # mysql:
  #   container_name: mysql
  #   image: mysql:5.7.29
  #   env_file:
  #     - ../env/mysql.env
  #   volumes:
  #     - ./mysql:/var/lib/mysql
  #   ports:
  #     - "3306:3306"
  # prometheus:
  #   container_name: prometheus
  #   image: prom/prometheus:latest
  #   volumes:
  #     - ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
  #   ports:
  #     - "9090:9090"
  #   depends_on:
  #     - nacos
  #   restart: on-failure
  # grafana:
  #   container_name: grafana
  #   image: grafana/grafana:latest
  #   ports:
  #     - 3000:3000
  #   restart: on-failure

MySQL 集群模式部署

你可以使用以下命令在集群中部署MySQL实例:

docker-compose -f example/sing-cluster-hostname.yaml up -d

初始化nacos数据库

Nacos服务的MySQL版本

数据库脚本

  • 初始化数据库nacos-mysql:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

  • Github官方脚本:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

脚本内容

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for config_info
-- ----------------------------
DROP TABLE IF EXISTS `config_info`;
CREATE TABLE `config_info`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_aggr
-- ----------------------------
DROP TABLE IF EXISTS `config_info_aggr`;
CREATE TABLE `config_info_aggr`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
DROP TABLE IF EXISTS `config_info_beta`;
CREATE TABLE `config_info_beta`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
DROP TABLE IF EXISTS `config_info_tag`;
CREATE TABLE `config_info_tag`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
DROP TABLE IF EXISTS `config_tags_relation`;
CREATE TABLE `config_tags_relation`  (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`) USING BTREE,
  UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE,
  INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
DROP TABLE IF EXISTS `group_capacity`;
CREATE TABLE `group_capacity`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
  `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
  `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
DROP TABLE IF EXISTS `his_config_info`;
CREATE TABLE `his_config_info`  (
  `id` bigint(64) UNSIGNED NOT NULL,
  `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`) USING BTREE,
  INDEX `idx_gmt_create`(`gmt_create`) USING BTREE,
  INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE,
  INDEX `idx_did`(`data_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 126 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions`  (
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `resource` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles`  (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE INDEX `uk_username_role`(`username`, `role`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
DROP TABLE IF EXISTS `tenant_capacity`;
CREATE TABLE `tenant_capacity`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
  `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
  `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
DROP TABLE IF EXISTS `tenant_info`;
CREATE TABLE `tenant_info`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE,
  INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `enabled` tinyint(1) NOT NULL,
  PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

手动创建Nacos容器

下载完Nacos镜像后,可以使用以下命令创建Nacos容器:

Linux

用于在本地主机中运行"Nacos"容器实例,版本为v3。指定了一些环境变量,如MYSQL的用户、密码、数据库名、端口号等,用于配置容器的运行环境,并将本地的端口映射到容器内部的相应端口,使得可以通过本机访问容器内Nacos的相关端口服务。此外,通过 -d 参数,将容器以后台运行模式启动,并且通过 -t 参数指定了一个伪终端,使得启动后可以通过docker exec 进入容器内部操作。

docker run -itd \
--name nacos \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=172.17.0.4 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
liboware/nacos:v3

Docker参数介绍

绍Docker的常用命令参数。其中,-d参数表示在后台运行容器,–name参数用于指定容器的名称,-p参数可以将容器内的端口映射到主机上,这里将容器的8848端口映射到主机的8848端口,而-e参数用于设置容器中的环境变量。

MySQL参数介绍

NameDescriptionOption
MODEcluster模式/standalone模式cluster/standalone
default: cluster
NACOS_SERVERSnacos cluster地址eg. ip1,ip2,ip3
PREFER_HOST_MODE是否支持hostnamehostname/ip
default: ip
NACOS_SERVER_PORTnacos服务器端口default: 8848
NACOS_SERVER_IP多网卡下的自定义nacos服务器IP
SPRING_DATASOURCE_PLATFORMstandalone 支持mysqlmysql/empty
default: empty
MYSQL_MASTER_SERVICE_HOSTmysql 主节点host
MYSQL_MASTER_SERVICE_PORTmysql 主节点端口default: 3306
MYSQL_MASTER_SERVICE_DB_NAMEmysql 主节点数据库
MYSQL_MASTER_SERVICE_USER数据库用户名
MYSQL_MASTER_SERVICE_PASSWORD数据库密码
MYSQL_SLAVE_SERVICE_HOSTmysql从节点host
MYSQL_SLAVE_SERVICE_PORTmysql从节点端口default: 3306
MYSQL_DATABASE_NUM数据库数量default: 2
JVM_XMS-Xmsdefault: 2g
JVM_XMX-Xmxdefault: 2g
JVM_XMN-Xmndefault: 1g
JVM_MS-XX:MetaspaceSizedefault: 128m
JVM_MMS-XX:MaxMetaspaceSizedefault: 320m
NACOS_DEBUG开启远程调试y/n
default: n
TOMCAT_ACCESSLOG_ENABLEDserver.tomcat.accesslog.enableddefault: false

mysql配置环境变量的环境变量文件

如果上面的mysql配置过高,每次执行脚本都特别多,那么可以采用–env-file进行导入环境变量。

docker --env-file

docker --env-file命令用于指定一个文件,其中包含了需要设置的环境变量。使用这个命令,可以将环境变量从文件中导入到Docker容器中。例如,如果env.list文件包含需要设置的环境变量,可以通过以下命令将文件中的环境变量导入到Docker容器中:

mysql的环境脚本文件:nacos-docker\env\nacos-standlone-mysql.env,我们可以根据不同的环境和场景进行调整即可。

PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=192.168.31.219
MYSQL_SERVICE_DB_NAME=barm_nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=123456
... ... 

执行环境变量文件的脚本

docker run -itd \
--name nacos \
--env-file nacos-docker\env\nacos-standlone-mysql.env
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
liboware/nacos:v3

在这个例子中,nacos-standlone-mysql.env文件包含了一些需要设置的环境变量,而liboware/nacos:v3则代表了要运行的Docker镜像。使用--env-file参数,可以将env.list文件中的环境变量全部设置到liboware/nacos:v3容器中。

访问Nacos服务

一旦成功创建了 Nacos 容器,就可以使用浏览器访问 Nacos 服务。只需在浏览器中输入 http://localhost:8848/nacos,即可进入 Nacos 服务的管理界面。

配置Nacos服务

在 Nacos 服务管理界面中,可以进行服务注册、配置管理等各种操作,可以根据自己的需求进行配置。

启动Nacos服务

启动 Nacos 容器非常简单,只需执行以下命令:

docker start nacos

每次需要使用 Nacos 时,执行该命令即可。

停止和删除容器

如果需要停止或删除容器,可以使用以下命令:

停止容器

docker stop nacos

删除容器

docker rm nacos

这些指令可以帮助您轻松地管理 Nacos

总结

本文介绍了如何使用 Docker 容器来部署和搭建 Nacos 服务,通过使用 Docker 容器,您可以轻松地部署和管理 Nacos 服务,在不同的环境中迁移、扩展和备份 Nacos 服务也更加方便。同时,使用 Docker 容器也有助于提高应用程序的可移植性和可扩展性,让您的应用程序可以更加灵活地适应不同的场景和需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python遍历4层的最佳实践

Python遍历4层的最佳实践 如果您对搜索引擎优化(SEO)和网络爬虫有所了解,那么您可能会知道遍历多层链接的重要性。在这篇文章中,我将介绍如何使用Python编写一个简单而有效的爬虫程序,以遍历4层链接。我会使用标准的P…

AU 简单混音模板,用于AI换声,简单记录

玩AI换声,记录一下快速入门学到的混音经验 混音成品:【AI绫华/RVC2.0】星之所在 https://www.bilibili.com/video/BV1Ao4y1K7P9 人声轨效果器 多频段压缩器 主要用来控制高频的刺刺声 回声 主要用来使声音更加饱满 自适应降噪 减少毛毛躁躁的噪音&…

chatgpt赋能python:如何在Python中选取列表的某一个元素

如何在Python中选取列表的某一个元素 在Python编程中,经常需要从一个包含多个元素的列表中选取特定的元素,以进行下一步的操作或处理。本文将介绍如何通过索引和切片的方式来选取Python列表中的元素。 什么是Python列表 在Python中,列表&a…

chatgpt赋能python:Python怎么遍历ASCII表?

Python怎么遍历ASCII表? 什么是ASCII表? ASCII表,即美国信息交换标准代码,是最早广泛用于计算机中字符编码的标准之一。它包含128个字符,其中包括大写字母、小写字母、数字、标点符号以及其他特殊字符,如…

机器视觉初步5:图像预处理相关技术与原理简介

在机器视觉领域中,图像预处理是一项非常重要的技术。它是指在对图像进行进一步处理之前,对原始图像进行一系列的操作,以提高图像质量、减少噪声、增强图像特征等目的。本文将介绍一些常用的图像预处理技术,并通过配图说明&#xf…

PHP 课后习题解析与笔记——流程控制语句习题

文章目录 📋前言🎯题目一🎯题目二🎯知识点回顾🧩if...else🧩switch🧩while🧩do...while🧩for🧩foreach 📝最后 📋前言 这篇文章记录一…

chatgpt赋能python:Python如何遍历文件中的数据

Python如何遍历文件中的数据 Python是一种优秀的编程语言,它在数据处理和文件操作方面非常强大。在本篇文章中,我们将讨论如何使用Python遍历文件中的数据。 什么是遍历文件? 在Python中,遍历文件意味着访问文件中的每一行,并…

油气成因现代模式

根据有机质的性质变化和油气生成沉积有机质的成烃演化可划分为三个阶段:成岩作用阶段、深成作用阶段和准变质作用阶段;相应地又按有机质的成熟程度将有机质成烃演化划分为未成熟阶段、成熟阶段和过成熟阶段,镜质体反射率Ro与有机质的成烃作用…

chatgpt赋能python:Python数据分析入门指南

Python数据分析入门指南 Python已成为数据科学和分析中使用最广泛的编程语言之一。在本指南中,我们将介绍如何使用Python进行数据分析并让您快速上手。 数据分析的基础知识 在开始学习Python进行数据分析之前,您需要了解一些基本的数据分析概念&#…

chatgpt赋能python:Python怎么选取不连续的列

Python怎么选取不连续的列 Python是一种流行的编程语言,可供人们进行多种不同的操作,如编写各种应用程序、数据分析、机器学习和Web开发等。对于Python编程人员来说,选取不连续的列是一项常见任务。在本文中,我们将探讨如何使用P…

chatgpt赋能python:Python怎么退出程序:让你轻松掌握退出Python程序的方法

Python怎么退出程序:让你轻松掌握退出Python程序的方法 Python是一种功能强大、易于学习且具有广泛应用的编程语言。在Python开发中,经常需要退出程序,以便在不需要时释放内存和其他资源。那么,Python怎么退出程序?本…

H.264帧结构和RTSP协议源码框架

目录 1、H264编码原理和基本概念 1.1、h.264编码原理 1.2、h.264编码相关的一些概念 2、H264的NAL单元详解 2.1、VCL和NAL的关系 2.2、H.264视频流分析工具 2.3、h264视频流总体分析 2.4、相关概念 3、H264的NAL单元---sps和pps 3.1、sps和pps详解 3.2、H264的profil…

HELLO算法笔记之散列表(哈希)

一、哈希表 建立键 key 与值 value 之间的映射,实现高效的元素查询。输入一个key,以O(1)获取对应的value 遍历: # 遍历哈希表 # 遍历键值对 key->value for key, value in mapp.items():print(key, "->&q…

REDIS缓存穿透 击穿 雪崩

一、前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者…

chatgpt赋能python:Python小数运算:解决精度问题的最佳实践

Python小数运算:解决精度问题的最佳实践 在进行小数运算时,Python是一种十分常用的语言,但在进行小数运算时,由于二进制和十进制之间的转换不完全,可能会导致一些精度问题。为了避免这些问题,让我们一起了…

推荐工具D1

Windows右键菜单管理程序: 主要功能 启用或禁用文件、文件夹、新建、发送到、打开方式、自定义文件格式、IE浏览器、WinX等右键菜单项目 对上述场景右键菜单项目进行修改名称、修改图标、导航注册表位置、导航文件位置、永久删除等操作 对上述场景右键菜单自定义添…

meethigher-基于Netty的轻量级Web框架Jooby

Spring-Web的好处是,快速上手、快速成型,且成熟稳定无Bug。 但对于个人而言,这套框架太重了。由此探寻更好的轻量Web框架Jooby! 本文源码地址meethigher/jooby-example: 基于Netty的轻量级Web框架Jooby使用示例 一、搭建项目 …

chatgpt赋能python:Python遍历指南:掌握5种常用方法实现高效遍历

Python遍历指南:掌握5种常用方法实现高效遍历 作为一种高效且易学的编程语言,Python在数据处理和分析方面常常被誉为行业标准。在Python中,遍历数据结构是处理数据的基本操作之一。它可以帮助您将大规模数据转换成可视化、文本分析、机器学习…

复杂前端组件 - 拖拽排序功能设计与实现

复杂前端组件 - 拖拽排序功能设计与实现 最终效果 原生实现原理 关于拖拽 标签的图片默认是可以拖动的(效果如上图) 然而其他的标签(div等)是不能被拖动的,鼠标点击选择后移动没有拖拽效果,需要添加属性…

dubbo源码阅读之-ExtensionLoader

dubbo源码阅读之-ExtensionLoader 概述构造方法说起extensionPostProcessors 后置处理器初始化实例策略ExtensionInjector 完成ioc 中的set注入 获取扩展点实现类getExtensionClasses 加载普通的扩展点getAdaptiveExtensionClass 加载自适应的扩展点创建Adaptive代理类 获取扩展…