Docker部署Nacos

参考

https://nacos.io/zh-cn/docs/v2/quickstart/quick-start-docker.html

https://nacos.io/zh-cn/docs/v2/guide/admin/monitor-guide.html

简介

最近以优惠价购买了云服务器,想着不能浪费资源,打算做点东西,玩一玩。可还是高估了我的经济实力,1C2G是真的不够用,我在这台机器上装了JDKMavenRocketMQ、DockerDocker-compose,同时在Docker下运行了MySQLRedisNginxRocketMQ-Dashboard,到这里其实都还好,在修改启动参数的情况下勉强够用。

但为了学习微服务,向Spring Cloud Alibaba靠,准备搭建Nacos作为注册中心和配置中心,这下问题来了,按照官网的部署方案,出了问题,在这里记录一下,为他人学习提供一下参考。

部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: "2"
services:
nacos:
image: nacos/nacos-server:latest
container_name: nacos-standalone
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
# 加上了启动参数配置
- JVM_XMS=256m
- JVM_XMX=256m
- JVM_XMN=128m
volumes:
# 挂载nacos配置文件
- ./init.d/application.properties:/home/nacos/conf/application.properties
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9848:9848"
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- nacos
restart: on-failure
grafana:
container_name: grafana
image: grafana/grafana:latest
volumes:
# 挂载grafana配置文件
- ./grafana/config/grafana.ini:/etc/grafana/grafana.ini
ports:
- 3000:3000
restart: on-failure

docker-compose如上,其中注释是我在原有上加的,自己部署时可以参考官网再做改动。

启动时注意这些端口有没有被占用,有的就改一下映射。

nacos启动参数配置

主要是我的机器太拉了,不然还是使用默认配置就好

属性 说明 默认
JVM_XMS -Xms 默认 :1g
JVM_XMX -Xms 默认 :1g
JVM_XMN -Xms 默认 :512m

挂载nacos配置文件

之所以挂载nacos配置文件,是因为之后接入Prometheus需要这个配置项打开,而在docker容器内配置实在有些麻烦。

application.properties

1
2
### Metrics for prometheus
management.endpoints.web.exposure.include=*

挂载grafana配置文件

这个我的问题还没解决,就是关于grafana.init配置文件,明明改了domain配置,可配置钉钉通知后,链接仍然是localhost,导致访问链接一直是错误的。

启动

1
docker-compose -f example/standalone-derby.yaml up -d

加上-d后台启动方式

1
2
3
4
5
6
7
8
# 查看启动情况
docker-compose -f example/standalone-derby.yaml ps


CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ca1c13e6a6b prom/prometheus:latest "/bin/prometheus --c…" 2 minutes ago Up 2 minutes 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
05fc4410bbd5 grafana/grafana:latest "/run.sh" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
35ae7aae1e09 nacos/nacos-server:latest "bin/docker-startup.…" 2 minutes ago Up 2 minutes 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp, 0.0.0.0:9848->9848/tcp, :::9848->9848/tcp nacos-standalone

控制台检查

这里注意提前把网络开通,防火墙、安全组这些

nacos

http://ip:8848/nacos

用户名密码:nacos/nacos

prometheus

http://ip:9090/

搜索:nacos_monitor,检查prometheus有没有采集到nacos数据

grafana

http://ip:3000/

用户名密码:admin/admin

首次登录需要修改密码

grafana配置

Configuration->Datassources->选择Prometheus

这里要注意了,按照官方说的说法确实没错,但是很容易出错,因为官网配置的的prometheus而Grafana默认配置的的是Prometheus,就是因为这一个字母大小小写,为之后从官网导入配置埋下伏笔。

Create->Import->Upload JSON file

倒入官网配置文件即可