docker部署nacos集群

前言:最近在做毕设项目,由于是基于微服务的,所以逃不开部署nacos这个服务注册及配置中心,为了方便以后的项目部署,顺便就把nacos集群做了。

一、准备阶段

  1. 首先要在云服务器或者虚拟机下安装docker(我就不过多阐述了,网上都有)

  2. docker拉取nacos以及nginx反向代理服务器镜像

    #拉取nacos:1.4.1,我用的是这个版本
    docker pull nacos/nacos-server:1.4.1
    #拉取nginx
    docker pull nginx
    
  3. 查看镜像

    docker images
    

    在这里插入图片描述

  4. 做nacos持久化

    下载nacos-server-1.4.1.zip

    在nacos/conf目录下找到nacos-mysql.sql文件

    方法一:打开sql文件,在IDEA或是Navicat中连接数据库,新建数据库nacos,use nacos,复制粘贴sql文件中的sql语句

    方法二:将sql文件上传到云服务器上,在此文件夹下顺序执行命令

    mysql -uroot -p
    create database nacos;
    use nacos;
    source nacos-mysql.sql
    

二、nacos启动,依次启动

  1. nacos1

    docker run -d \
    # 是否支持hostname
    -e PREFER_HOST_MODE=hostname \
    # cluster模式/standalone模式
    -e MODE=cluster \
    # nacos 端口号
    -e NACOS_APPLICATION_PORT=8845 \
    # nacos cluster地址
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    # mysql 数据库
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    # mysql 主节点host
    -e MYSQL_SERVICE_HOST=IP地址 \
    # mysql 主节点端口
    -e MYSQL_SERVICE_PORT=3301 \
    # 数据库用户名
    -e MYSQL_SERVICE_USER=root \
    # 数据库密码
    -e MYSQL_SERVICE_PASSWORD=123456 \
    # mysql 主节点数据库
    -e MYSQL_SERVICE_DB_NAME=nacos \
    # 数据库数量
    -e MYSQL_DATABASE_NUM=1 \
    # 设置 JVM 最大堆内存大小
    -e JVM_XMS=256m \
    # 设置 JVM 最初是堆内存大小
    -e JVM_XMX=256m \
    # 设置 JVM 堆内新生代的内存大小
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    # 多网卡下的自定义nacos服务器IP
    -e NACOS_SERVER_IP=IP地址 \
    -p 8845:8845 \
    --name nacos1 \
    nacos/nacos-server:1.4.1
    
  2. nacos2

    docker run -d \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8846 \
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=IP地址 \
    -e MYSQL_SERVICE_PORT=3301 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos \
    -e MYSQL_DATABASE_NUM=1 \
    -e JVM_XMS=256m \
    -e JVM_XMX=256m \
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    -e NACOS_SERVER_IP=IP地址 \
    -p 8846:8846 \
    --name nacos2 \
    nacos/nacos-server:1.4.1
    
  3. nacos3

    docker run -d \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8847 \
    -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=IP地址 \
    -e MYSQL_SERVICE_PORT=3301 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos \
    -e NACOS_SERVER_IP=IP地址 \
    -e MYSQL_DATABASE_NUM=1 \
    -e JVM_XMS=256m \
    -e JVM_XMX=256m \
    -e JVM_XMN=128m \
    -e JVM_MS=32m \
    -e JVM_MMS=80m \
    -p 8847:8847 \
    --name nacos3 \
    nacos/nacos-server:1.4.1
    
  4. 查看运行的容器

    docker ps
    

    在这里插入图片描述

  5. 浏览器访问

    在这里插入图片描述

    在这里插入图片描述

三、nginx配置及启动

  1. nginx的default.conf配置文件,我在服务器的root目录下

    获取default.conf

    #运行一个nginx,获取default.conf,之后删除容器(最后有基本命令)
    docker run -d --name nginxTest nginx
    docker cp nginxTest:/etc/nginx/conf.d/default.conf default.conf
    docker stop nginxTest
    docker rm nginxTest
    

    原本的default

    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #access_log  /var/log/nginx/host.access.log  main;
    
        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;
        #}
    }
    

    修改后

    #新增
    upstream cluster {
            server IP地址:8845;
            server IP地址:8846;
            server IP地址:8847;
    }
    
    server {
        listen       80;
        #listen  [::]:80;#改正
        server_name  localhost;
    
        #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;
     #}
    }
    
  2. 运行nginx

    docker run -p 80:80 --name my-nginx -v /root/default.conf:/etc/nginx/conf.d/default.conf --privileged=true -d nginx
    docker ps
    

    在这里插入图片描述

  3. 浏览器访问

    在这里插入图片描述

    在这里插入图片描述

docker基本的一些命令

  1. 查找镜像

    docker search 镜像名
    
  2. 拉取镜像

    docker pull 镜像名
    
  3. 查看镜像

    docker images
    
  4. 删除镜像

    docker rmi 镜像id
    
  5. 运行容器

    docker run 
    -d:后台运行
    -p:端口映射
    -e:自定义变量
    --name:容器名称
    
  6. 修改容器为自启动

    docker update 容器id/容器名 --restart=always
    
  7. 进入容器

    docker exec -it 容器id/容器名 /bin/bash
    
  8. 查看所有容器

    docker ps -a
    
  9. 查看运行中的容器

    docker ps
    
  10. 停止容器

    docker stop 容器id/容器名
    
  11. 删除容器

    docker rm 容器id/容器名
    
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁Mar.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值