Docker创建运行Nacos容器
Docker方式部署运行Nacos准备参考链接 – Mysql创建数据库以及用户的权限分配 – 服务器(Docker容器)# 准备--------------------线上环境创建数据库创建用户为用户分配权限# 下载nacos数据库文件https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql通过n
·
Docker方式部署运行Nacos
一、 准备
参考链接 – 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
更多推荐
已为社区贡献1条内容
所有评论(0)