wangguangwu
wangguangwu
发布于 2024-09-05 / 42 阅读
0
0

Docker 配置 Nacos

参考文献

在 Docker 中安装 Nacos(详细教程)

Nacos 版本:2.4.0

1. 拉取 Docker 镜像

1.1 获取最新版本的 Nacos 镜像

执行以下命令,拉取最新的 Nacos 镜像:

docker pull nacos/nacos-server

1.2 拉取指定版本的 Nacos 镜像

如果需要特定版本的 Nacos 镜像,可以使用以下命令:

docker pull nacos/nacos-server:v2.4.0

2. 启动单机非持久化模式

使用以下命令启动 Nacos 单机非持久化模式:

docker run --name nacos -d -p 8848:8848 -p 9848:9848 -e MODE=standalone nacos/nacos-server:v2.4.0

启动后可以通过以下 URL 访问 Nacos 控制台:

http://localhost:8848/nacos

默认的用户名和密码均为 nacos

3. 启动单机持久化模式

3.1 创建持久化挂载目录

在服务器上为 Nacos 创建所需的挂载目录:

  1. 创建 Nacos 主目录:
mkdir -p /root/workspace/docker/nacos
  1. 创建配置文件、日志文件和数据文件的挂载子目录:
mkdir -p /root/workspace/docker/nacos/{conf,logs,data}

3.2 复制容器目录到本地目录

首先使用非持久化模式启动 Nacos,然后将容器中的配置、日志和数据文件复制到本地:

docker cp nacos:/home/nacos/conf/ /root/workspace/docker/nacos
docker cp nacos:/home/nacos/logs/ /root/workspace/docker/nacos
docker cp nacos:/home/nacos/data/ /root/workspace/docker/nacos

注意:/root/workspace/docker/nacos 是服务器上的 Nacos 本地挂载目录。

3.3 停止并删除 Nacos 容器

3.3.1 获取容器 ID

使用以下命令查看当前正在运行的容器:

docker ps

示例输出:

[root@VM-4-16-centos nacos]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS                                       NAMES
dadd7c27ab5d   nacos/nacos-server:v2.4.0   "bin/docker-startup.…"   3 minutes ago   Up 3 minutes   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp   nacos

在此示例中,Nacos 容器的 CONTAINER IDdadd7c27ab5d

3.3.2 停止并删除容器

使用获取到的容器 ID,执行以下命令停止并删除容器:

docker stop dadd7c27ab5d && docker rm dadd7c27ab5d
  • docker stop:停止正在运行的容器。
  • docker rm:删除已停止的容器。

3.4 配置 Nacos 使用 MySQL

3.4.1 创建数据库

在 MySQL 中创建一个名为 nacos 的数据库:

CREATE DATABASE `nacos`;

3.4.2 执行数据库脚本

运行位于 /root/workspace/docker/nacos/conf 目录下的 mysql-schema.sql 脚本来初始化数据库。

3.4.3 启动 Nacos 容器

创建一个脚本文件(如 start_nacos.sh),内容如下:

#!/bin/bash

# 启动 Nacos 容器
docker run -d --name nacos \
  -p 8848:8848 \
  -p 9848:9848 \
  -p 9849:9849 \
  --env NACOS_AUTH_ENABLE=true \
  --env SPRING_DATASOURCE_PLATFORM=mysql \
  --env MYSQL_DATABASE_NUM=1 \
  --env MYSQL_SERVICE_HOST='MYSQL_HOST' \
  --env MYSQL_SERVICE_PORT=3306 \
  --env MYSQL_SERVICE_DB_NAME='DB_NAME' \
  --env MYSQL_SERVICE_USER='MYSQL_SERVICE_USER' \
  --env MYSQL_SERVICE_PASSWORD='MYSQL_SERVICE_PASSWORD' \
  --env NACOS_AUTH_TOKEN='NACOS_AUTH_TOKEN' \
  --env NACOS_AUTH_IDENTITY_KEY='NACOS_AUTH_IDENTITY_KEY' \
  --env NACOS_AUTH_IDENTITY_VALUE='NACOS_AUTH_IDENTITY_VALUE' \
  -v /root/workspace/docker/nacos/conf/:/home/nacos/conf \
  -v /root/workspace/docker/nacos/logs:/home/nacos/logs \
  -v /root/workspace/docker/nacos/data:/home/nacos/data \
  nacos/nacos-server:v2.4.0

3.4.4 启动脚本解释

3.4.4.1 基本启动命令

  • docker run -d --name nacos:使用 docker run 命令启动一个名为 nacos 的 Docker 容器,并在后台运行(-d)。

3.4.4.2 端口映射

  • -p 8848:8848:将宿主机的 8848 端口映射到容器的 8848 端口。Nacos 的 Web 控制台和 HTTP API 通过该端口访问。
  • -p 9848:9848-p 9849:9849:分别将宿主机的 9848 和 9849 端口映射到容器的相应端口,这些端口用于 Nacos 的内部 RPC 通信,主要在集群模式下使用。

3.4.4.3 环境变量

  • --env NACOS_AUTH_ENABLE=true:启用 Nacos 的认证功能。用户在访问 Nacos 的 Web 控制台或 API 时需要进行身份验证。

  • --env SPRING_DATASOURCE_PLATFORM=mysql:指定数据源平台为 MySQL,Nacos 将使用 MySQL 作为数据库来存储配置和服务数据。

  • --env MYSQL_DATABASE_NUM=1:指定使用的 MySQL 数据库实例数量为 1。Nacos 会连接一个 MySQL 数据库实例。

  • --env MYSQL_SERVICE_HOST=121.4.119.252:指定 MySQL 数据库的主机地址为 121.4.119.252

  • --env MYSQL_SERVICE_PORT=3306:指定 MySQL 数据库的端口为 3306(MySQL 的默认端口)。

  • --env MYSQL_SERVICE_DB_NAME=nacosdb:指定 Nacos 使用的 MySQL 数据库名称为 nacosdb

  • --env MYSQL_SERVICE_USER=root:指定 MySQL 数据库的用户名为 root

  • --env MYSQL_SERVICE_PASSWORD='$Wang@GuangWu@123!':指定 MySQL 数据库的密码为 $Wang@GuangWu@123!。用单引号括起来以防止特殊字符被 Shell 解释。

  • --env NACOS_AUTH_TOKEN='SecretKey012345678901234567890123456789012345678901234567890123456789':指定 Nacos 的身份验证密钥,用于身份验证机制的安全令牌。

  • --env NACOS_AUTH_IDENTITY_KEY='root'--env NACOS_AUTH_IDENTITY_VALUE='wangguangwu':指定 Nacos 的身份密钥和身份值。这些值可以用于 Nacos 服务间的认证。

3.4.4.4 挂载目录

  • -v /root/workspace/docker/nacos/conf/:/home/nacos/conf:将宿主机 /root/workspace/docker/nacos/conf/ 目录挂载到容器的 /home/nacos/conf 目录,用于存储 Nacos 的配置文件。

  • -v /root/workspace/docker/nacos/logs:/home/nacos/logs:将宿主机 /root/workspace/docker/nacos/logs 目录挂载到容器的 /home/nacos/logs 目录,用于存储 Nacos 的日志文件。

  • -v /root/workspace/docker/nacos/data:/home/nacos/data:将宿主机 /root/workspace/docker/nacos/data 目录挂载到容器的 /home/nacos/data 目录,用于存储 Nacos 的数据。

3.4.4.5 Nacos 镜像

  • nacos/nacos-server:v2.4.0:使用指定版本(v2.4.0)的 nacos/nacos-server Docker 镜像来运行 Nacos 服务。

3.4.4.6 补充说明

  • 去掉 --env MODE=standalone:在该启动脚本中没有设置 MODE=standalone,因为在这种模式下 Nacos 使用嵌入式数据库,而不会连接外部 MySQL 数据库。去掉该参数能够确保 Nacos 使用外部数据库(如 MySQL)来存储配置和元数据,这对于生产环境是必需的。

总结:此启动脚本配置了 Nacos 在 Docker 容器中运行,并使用外部 MySQL 数据库进行数据持久化。所有的配置、日志和数据都被挂载到宿主机的相应目录,以便于数据管理和持久化。Nacos 的认证和安全配置也已启用,以确保服务安全性。


评论