一、 准备

参考链接 – Mysql创建数据库以及用户的权限分配 – 服务器(Docker容器)

# 准备--------------------
线上环境创建数据库
创建用户
为用户分配权限

# 下载nacos数据库文件
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

通过navicate数据库管理工具,在创建的数据库,右击“运行sql文件”
# -----------------------

二、 线上环境Docker创建nacos容器

2.1 简单创建nacos,进入容器配置数据库

#查看镜像
docker search nacos

#拉取镜像
docker pull nacos/nacos-server

#创建容器
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server


#进入容器
docker exec -it *****(服务id) /bin/bash 

【//此时已经进入容器
cd conf
vi application.properties --> insert插入模式 ->  更改内容 如下图 
】

在这里插入图片描述

【
esc 退出编辑模式
:wq 保存并退出
】
#列出运行中的容器
docker ps

#重启nacos
docker restart ***(nacos容器id)

2.2 复杂创建nacos容器,使用参数配置数据库【推荐】

# 首先准备好,需要挂载的文件夹
# 1.需要转杯什么文件夹,并不知道,那就先随便创一个nacos容器
#查看镜像
docker search nacos
#拉取镜像
docekr pull nacos/nacos-server
#创建容器
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
# 2.查看容器
docker ps

CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
150acd34989b   nacos/nacos-server   "bin/docker-startup.…"   30 minutes ago   Up 30 minutes   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp              nacos


# 3.进入nacos容器,150acd34989b 是 容器id
docker exec -it 150acd34989b /bin/bash
【
进入容器的操作,查看文件夹
[root@iZ2zeb30om76a6yxf6tje2Z ~]# docker exec -it 150acd34989b /bin/bash
[root@150acd34989b nacos]# ls
LICENSE  NOTICE  bin  conf  data  derby.log  logs  target  work
[root@150acd34989b nacos]# cd ..
[root@150acd34989b home]# ls
nacos
[root@150acd34989b home]## 4.输入“exit”, 退出容器

# 5.创建文件夹可以这样 mkdir -p /data/docker/nacos
# 我这边直接使用docker cp将容器内容复制出来
# /data/docker/nacos这个nacos文件夹如果没创建,则直接赋值在这一层,如果存在,会复制在这个文件夹里面,变成 /data/docker/nacos/nacos
(格式: docker cp 容器id:容器内文件位置 将要拷贝到最外层的位置)
docker cp  150acd34989b:/home/nacos /data/docker/nacos

# 6.文件夹创建好,就可以把这个容器删除
# 停止容器运行
docker stop 容器id
# 移除容器
docker rm 容器id
# 7.正式创建容器
docker run -itd \
--privileged=true \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.11.22.232 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=sqlname \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=li_nacos \
-e TIME_ZONE='Asia/Shanghai' \
-p 8848:8848 \
-v /data/docker/nacos/logs:/home/nacos/logs \
-v /data/docker/nacos/conf:/home/nacos/conf \
-v /data/docker/nacos/data:/home/nacos/data \
--name nacos \
--restart=always \
nacos/nacos-server:latest


【
细节解析
docker run -d \
--privileged=true \给与权限,使用该参数,container内的root拥有真正的root权限
-e PREFER_HOST_MODE=hostname \ # 
-e MODE=standalone \ # 使用单机模式
-e SPRING_DATASOURCE_PLATFORM=mysql \ # 数据库类型
-e MYSQL_SERVICE_HOST=localhost \ # 数据库地址
-e MYSQL_SERVICE_USER=root \ # 数据库账号
-e MYSQL_SERVICE_PASSWORD=12345678 \ # 数据库密码
-e MYSQL_SERVICE_DB_NAME=nacos_config_name \ # 数据库名称
-e JVM_XMS=256m \ # 程序启动时占用内存大小
-e JVM_XMX=256m \ # 程序运行期间最大可占用的内存大小
-e JVM_XMN=256m \ # 
-p 8848:8848 \ #端口映射
-v /lbs/nacos/logs:/nacos/logs \ #挂载
--name nacos \ #容器名 
--restart=always \ # 自动启动
nacos/nacos-server:latest #镜像名:版本(是最新的版本直接镜像名即可)

学习链接:https://blog.csdn.net/PyongSen/article/details/124627058
】
# 查看容器是否创建成功
docker ps


[root@iZ2zeb30om76a6yxf6tje2Z docker]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED         ST                                                                  ATUS         PORTS                                                  NAMES
9a361cd1952a   nacos/nacos-server:latest   "bin/docker-startup.…"   4 minutes ago   Up                                                                   4 minutes   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp              nacos

# 查看挂载是否成功,以及环境变量的配置
docker inspect 9a361cd1952a(容器id)

在这里插入图片描述

三、 访问nacos

#内网查看是否内访问nacos  但此时 外网浏览器是访问不到的
curl localhost:8848/nacos/

这是如果想要外网可以访问

# 方式一 nginx转发 default.conf 
# 此种方式缺点,本地服务起不来,只能直接发布线上,并且nacos与后端发布用同一个服务器

server {
    listen       80 default;
    server_name  ***.com; #域名

    client_max_body_size     50M;
    client_header_timeout    1m;
    client_body_timeout      1m;
    proxy_connect_timeout    60s;
    proxy_read_timeout      1m;
    proxy_send_timeout      1m;

    #指向页面
    location / {  
        add_header Cache-Control no-cache;
        add_header Pragma no-cache;
        add_header Expires 0;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #此时可用外网访问 ip/nacos/
    location /nacos {
        proxy_pass http://内网IP:8848/nacos;
    }
}



#方式二 服务器开放 8848 端口,自行百度,我这里用天翼云开放8848 端口
访问:  外网ip:8848/nacos 即可


登录的时候 默认账号密码(账号:nacos        密码:nacos)

我的状况是,原本有个服务器安装了nacos,因服务器移动,nacos不能使用,所以我在跑后端服务的服务器里重新安装nacos,项目里面之前都是配置好了,只需要改动 server-addr
此时我的后端服务、nacos、mysql 都在同一个服务器
【每个人的环境不一定一样,如果遇到了其他的问题,评论区留言】

在这里插入图片描述

四、 参考链接

1.docker部署 单机版nacos – https://blog.csdn.net/cljdsc/article/details/113872313

2.Docker安装Nacos – https://www.cnblogs.com/ameken/articles/14752315.html

3.nacos 官方文档 – https://nacos.io/zh-cn/docs/what-is-nacos.html

4.docker安装nacos(赞)

5.容器参数分析(可以看看挺好)

6.修改nacos默认账号密码方式

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐