提示:
系统测试平台:Win10系统
▲ 默认docker已经安装成功
版本说明:
Docker版本:19.03.12
Nacos版本: 1.3.2
Mysql版本:8.0.21
Nginx版本:1.19.2
先说自己搭建的,再讲官方的,其中的曲折会如实记录,配置文件会详细贴出!
为了配置集群的方便性,已经后续官网配置的可行性,此设置务必配置,否则后续Nacos官网配置的文件无法运行!
命令:
Mysql拉取:
docker pull mysql
Naocs拉取:
docker pull nacos/nacos-server
Nginx拉取:
docker pull nginx
验证是否已经pull到本地:
/*
* 默认创建的是bridge网络
* 111.111.111.0/24最后的24,
* 代表网段前24位相同,后8位不同,
* 即该网段范围为:111.111.111.1~111.111.111.254
*/
docker network create --subnet 111.111.111.0/24 anet
// 检查自定义的anet是否成功
docker network ls
后续用到的是此网段运行容器,也可以选择docker默认的网段运行容器。
# --net anet 指定采用自定义网络anet
# --network-alias mysql_main 指定网络范围别名,**备后续配置nacos数据库使用**
# MYSQL_ROOT_PASSWORD=root 指定mysql登录密码,必须添加,否则无法启动容器
docker run -d -p 3306:3306 --network anet --network-alias mysql_main -e MYSQL_ROOT_PASSWORD=root --name mysql_main mysql:latest
验证是否启动成功:
Nacos官方数据源sql链接
操作步骤:
1. 鼠标点击选中文档中的内容
2. Ctrl + C, 全部复制
3. 在本地创建一个sql文件,Ctrl + V 粘贴文本
4. 保存文件,文件后缀为.sql
方法一: 通过第三方链接sql库工具 Navicat链接mysql容器,并导入sql文件,运行即可
注意,字符集必须时utf8,因为nacos目前只认utf8字符集,utf8mb4也不行
方法二: 进入mysql容器,copy本地sql文件到容器内部,运行
# 查看mysql的容器id, 我的是4080fca966f5
docker ps
# copy本地sql文件到容器内部目录, copy到home根目录下
docker cp C:\Users\xxx\Desktop\nacos-sql.sql 4080fca966f5:/home
# 进入mysql容器内部
docker exec -it 4080fca966f5 /bin/bash
# 登录mysql
mysql -u root -p
# 再输入mysql密码登录进去
# 创建数据库命令
CREATE DATABASE IF NOT EXISTS nacos_config default charset utf8 COLLATE utf8_general_ci;
# 导入sql脚本
use nacos_config
# source后面跟sql脚本的绝对路径
source /home/nacos-sql.sql
# 导入成功后,查验是否成功
show tables
# 运行命令
docker run -d --name nacos-test nacos/nacos-server:latest
# 查看运行的容器ID, 我的是 5c0a4eb39a94
docker ps
# copy配置文件到本地共享目录下,供后续映射本地卷使用
docker cp 5c0a4eb39a94:/home/nacos/conf/application.properties D:\Document\Docker\nacos\conf
注意: 本地卷目录地址,必须是先前配置的docker共享目录,否则运行容器时,无法成功完成映射,谨记!!
打开copy的配置文件,编辑配置
配置application.properties
# 配置application.properties,在文件的最后位置添加以下内容
spring.datasource.platform=mysql
db.num=1
# mysql_main:3306是mysql容器的网络别名
db.url.0=jdbc:mysql://mysql_main:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
# 启动mysql时设置的密码
db.password=root
1. 启动
# 启动nacos-1
docker run -d -p 8847:8848 --network anet --network-alias nacos-1 --name nacos-1 -e TZ="Asia/Shanghai" -e PREFER_HOST_MODE="hostname" -e MODE=cluster -e NACOS_SERVERS="nacos-1:8848 nacos-2:8848 nacos-3:8848" -v D:\Document\Docker\nacos\conf\application.properties:/home/nacos/conf/application.properties nacos/nacos-server:latest
# 启动nacos-2
docker run -d -p 8848:8848 --network anet --network-alias nacos-2 --name nacos-2 -e TZ="Asia/Shanghai" -e PREFER_HOST_MODE="hostname" -e MODE=cluster -e NACOS_SERVERS="nacos-1:8848 nacos-2:8848 nacos-3:8848" -v D:\Document\Docker\nacos\conf\application.properties:/home/nacos/conf/application.properties nacos/nacos-server:latest
# 启动nacos-cluster-123
docker run -d -p 8849:8848 --network anet --network-alias nacos-3 --name nacos-3 -e TZ="Asia/Shanghai" -e PREFER_HOST_MODE="hostname" -e MODE=cluster -e NACOS_SERVERS="nacos-1:8848 nacos-2:8848 nacos-3:8848" -v D:\Document\Docker\nacos\conf\application.properties:/home/nacos/conf/application.properties nacos/nacos-server:latest
3. 启动参数说明
docker run -d \ # 后台运行容器
-p 8847:8848 \ # 主机8847端口映射容器8848端口
--network anet \ # 采用自定义的网络 anet
--network-alias nacos-1 \ # 设置网络别名 nacos-1
--name nacos-1 \ # 容器名称 nacos-1
-e TZ="Asia/Shanghai" \ # 时区环境变量 上海
-e PREFER_HOST_MODE="hostname" \ #首选主机模式
-e MODE=cluster \ # 设置集群模式
-e NACOS_SERVERS="nacos-1:8848 nacos-2:8848 nacos-3:8848" \ # nacos集群地址
-v D:\Document\Docker\nacos\conf\application.properties:/home/nacos/conf/application.properties \ # 本地配置文件映射到nacos配置文件
nacos/nacos-server:latest # 启动的nacos镜像
application.properties配置文件的映射,主要目的是映射我们创建的mysq容器
2. 验证:
因为我们配置的Nacos依赖的数据库是自定义的Mysql容器,所以我们应该先启动Mysql容器,再启动Nacos容器
Nacos默认登录名:naocs, 密码:nacos
此时登录进去之后,发现另外两台nacos容器已经注入:
至此,3台nacos集群+Mysql(主)已经配置成功,接下来,配置nginx
# 启动
docker run -d --name nginx-test nginx
# 进入容器
docker exec -it nginx-test /bin/bash
# 进入容器内部后,找到配置文件路径
cd /etc/nginx/
# 查看nginx.conf配置文件
copy配置文件default.conf到本地docker共享路径:
# copy配置文件default.conf到本地路径下
docker cp 704d92e2e528:/etc/nginx/conf.d/default.conf D:\Document\Docker\nginx
# 也可以copy前端html到本地,此映射可有可无
docker cp 704d92e2e528:/usr/share/nginx/html D:\Document\Docker\nginx\html
打开我们copy到本地的default.conf文件,编辑并保存:
注意:标有 "#新增" 的说明是在原有的配置文件中新添加的内容。注意添加内容的位置。
#新增,为了演示,故不配置权重
upstream cluster {
server nacos-1:8848;
server nacos-2:8848;
server nacos-3:8848;
}
server {
listen 80;
server_name localhost;
#新增,配置nginx的日志级别debug
#error_log /var/log/nginx/debug.log debug;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
#新增,转向集群配置
location /nacos {
proxy_pass http://cluster;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# 启动命令
docker run -d -p 80:80 --name nginx --network anet -v D:\Document\Docker\nginx\html:/usr/share/nginx/html -v D:\Document\Docker\nginx\log:/var/log/nginx -v D:\Document\Docker\nginx\default.conf:/etc/nginx/conf.d/default.conf nginx:latest
# 查看启动的nginx容器
docker ps
启动命令简要:
docker run -d \
-p 80:80 \ # 主机80端口映射容器80端口
--name nginx \ # 容器名称nginx
--network anet \ # 指定网络,anet
-v D:\Document\Docker\nginx\html:/usr/share/nginx/html \ # 映射html到主机
-v D:\Document\Docker\nginx\log:/var/log/nginx \ # 映射日志文件到主机
-v D:\Document\Docker\nginx\default.conf:/etc/nginx/conf.d/default.conf \ # 映射主机配置文件到nginx
nginx:latest
注意: --network anet必须添加,因为我们之前启动的nacos,mysql都在此网络下,只有同一网络容器之间才能互通!
至此,我的Nacos集群配置全部完成,实现 Nginx(1台) + Nacos(3台) + Mysql(1台)的配置。
Nacos官方集群文档地址,必读
git clone https://github.com/nacos-group/nacos-docker.git
注意:clone下的包,必须在docker设置的共享目录下! 我的在D:\Document\Docker目录下,故把clone的文件包放在此目录。
因为上面我们自己启动的Nacos集群用到了3306等端口,与官方集群配置有冲突,所以需要先把我们自己搭建的集群容器全部关掉,再用官方的方式启动集群!
# 进入此文件夹,到根目录
cd nacos-docker
# 启动,等待一段时间,因为官方启动的镜像,本地如果没有需要下载
docker-compose -f example/cluster-hostname.yaml up
注意:启动Nacos集群的cmd终端不能关闭!
至此:官方集群配置已经说明完毕,相对来说是个无脑操作 (●’◡’●)
(本文完 !)
如果有涉及到本文内容,必须付此原文链接,并简要说明!