Nacos 使用docker启动

本文介绍如何使用Docker部署Nacos服务,并详细配置Nacos与MySQL的集成,包括创建MySQL容器、导入Nacos表结构、配置Nacos参数及最终启动流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:Nacos 使用docker启动

docker pull nacos/nacos-server

mkdir -p /home/nacos/logs/                      #新建logs目录

mkdir -p /home/nacos/init.d/         

vim /home/nacos/init.d/custom.properties        #修改配置文件

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=pass


nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

management.metrics.export.elastic.enabled=false

management.metrics.export.influx.enabled=false


server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i


nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true

准备一个mysql供nacos使用,这里直接使用docker创建一个mysql的容器,干净又卫生。

 

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=pass -d mysql:5.7

 

接着在mysql创建nacos数据库,从gitlab上下载nacos的表结构导入到数据库。

 

最后直接启动nacos。

 

docker run --name nacos -d -p 100.98.97.186:8848:8848 --privileged=true --restart=always -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /home/nacos/logs:/home/nacos/logs -v /home/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties nacos/nacos-server

### Nacos Docker 容器启动后立即退出的原因分析 Nacos Docker 容器启动后立即退出的主要原因是由于容器内部缺乏一个持续运行的前台进程。Docker 的设计机制决定了如果容器内的主要进程结束或者没有前台进程保持活动状态,那么该容器会被视为完成任务并自动停止[^1]。 对于 Nacos 来说,默认情况下其启动脚本可能并未提供足够的条件来维持容器处于活跃状态。如果没有设置合适的参数或未指定后台守护模式,则可能导致容器在初始化完成后即刻终止工作流程[^2]。 ### 解决方案 #### 方法一:通过修改入口命令使容器保持运行 可以通过调整 `docker run` 命令中的指令部分,确保有至少一个长期运行的任务存在。例如采用无限循环的方式让 Shell 脚本不断执行简单操作从而阻止容器关闭: ```bash docker run -d nacos/nacos-server sh -c "while true; do echo 'keep container alive'; sleep 60; done" ``` 这种方法虽然能够有效防止容器退出,但对于实际应用的服务来说并不理想,因为它掩盖了真正应该作为主程序运行的部分[^3]。 #### 方法二:正确配置 Nacos 镜像以支持后台服务模式 更专业的做法是按照官方文档指导或是参照已验证成功的项目实例(如 [SpringBootLearning](https://github.com/gf-huanchupk/SpringBootLearning/tree/master/springboot-seata)[^4]),合理设定环境变量以及端口映射等选项,并确认是以 daemon 方式启动服务而非一次性脚本形式: ```bash docker run -d --name nacos \ -e MODE=standalone \ -p 8848:8848 \ nacos/nacos-server ``` 上述例子展示了如何利用 `-d` 参数将容器置于分离模式下独立运作,同时设置了必要的环境变量 (`MODE`) 和主机到容器间的网络端口转发关系 (-p),这有助于保障 Nacos 实例能够在后台稳定持久化运转而不轻易崩溃中断. 另外值得注意的是,某些特定版本可能存在 bug 或者兼容性问题也会引起异常行为表现,因此建议始终选用最新稳定发行版并密切关注社区反馈更新动态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值