Nacos 是一个动态服务发现、配置和服务管理平台,使用 Docker 可以方便地部署和运行 Nacos 服务。以下是几种常见的 Docker 启动 Nacos 的方式。
docker run --name nacos-standalone -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:latest
--name nacos-standalone
: 容器名称-e MODE=standalone
: 设置为单机模式-p 8848:8848
: 映射容器8848端口到宿主机-d
: 后台运行nacos/nacos-server:latest
: 使用最新版Nacos镜像创建 docker-compose.yml
文件:
version: '3'
services:
nacos1:
image: nacos/nacos-server:latest
container_name: nacos1
environment:
- PREFER_HOST_MODE=hostname
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- NACOS_SERVER_IP=nacos1
ports:
- "8848:8848"
volumes:
- ./cluster-logs/nacos1:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
networks:
- nacos_net
nacos2:
image: nacos/nacos-server:latest
container_name: nacos2
environment:
- PREFER_HOST_MODE=hostname
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- NACOS_SERVER_IP=nacos2
ports:
- "8849:8848"
volumes:
- ./cluster-logs/nacos2:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
networks:
- nacos_net
nacos3:
image: nacos/nacos-server:latest
container_name: nacos3
environment:
- PREFER_HOST_MODE=hostname
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- NACOS_SERVER_IP=nacos3
ports:
- "8850:8848"
volumes:
- ./cluster-logs/nacos3:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
networks:
- nacos_net
networks:
nacos_net:
driver: bridge
然后运行:
docker-compose up -d
为了持久化Nacos的数据和配置,可以挂载以下目录:
docker run --name nacos \
-e MODE=standalone \
-p 8848:8848 \
-v ./data:/home/nacos/data \
-v ./logs:/home/nacos/logs \
-v ./conf:/home/nacos/conf \
-d nacos/nacos-server:latest
可以创建自定义配置文件 custom.properties
:
# 开启认证
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=your-key
nacos.core.auth.server.identity.value=your-value
# 数据库配置(如果使用外部数据库)
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql-host:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=username
db.password=password
然后挂载到容器中:
docker run --name nacos \
-e MODE=standalone \
-p 8848:8848 \
-v ./custom.properties:/home/nacos/init.d/custom.properties \
-d nacos/nacos-server:latest
如果需要使用外部MySQL数据库而不是内置的Derby:
docker run --name nacos \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=your-mysql-host \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=your-password \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8848:8848 \
-d nacos/nacos-server:latest
启动后,可以通过以下URL访问Nacos控制台:
http://localhost:8848/nacos
默认用户名和密码都是 nacos
以上示例提供了Nacos在Docker中的常见部署方式,可以根据实际需求进行调整。