Docker部署nacos+mysql
1.1 前置了解核心知识:
网络:保证容器在同一个网络通信,且使用内部端口(不需要使用外部映射端口)-大坑
比如我设置mysql的对外端口为3308,但是容器通信依然采用3306(容器内部通信)
1 创建网络
# 1. 停止现有容器,如果删除失败,看看是否有其他容器在使用
docker-compose down
# 2. 删除现有网络(如果存在)
docker network rm mynetwork
# 3. 创建新网络
docker network create mynetwork
# 4. 启动服务
docker-compose up -d
# 5.查看启动日志
docker-compose logs -f
2 部署
不需要其他配置,一个命令就够了,不需要看其他的了,都帮你踩坑踩完了
前置了解内容:
创建一个docker文件
docker-compose.yml
来吧直接上命令:
# 启动命令
docker-compose up -d
# 查看容器状态
docker-compose ps
# 查看日志
docker-compose logs -f
文件内容
version: '3'
services:
mysql:
image: mysql:8.0.20
container_name: nacos_mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=nacos_config
- MYSQL_ROOT_HOST=% # 客户连接权限
command:
--default-authentication-plugin=mysql_native_password # 客户连接权限
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
ports:
- "3308:3306"
networks:
- mynetwork
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
nacos:
image: nacos/nacos-server:latest
container_name: mynacos
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_DATABASE_NUM=1
- MYSQL_SERVICE_HOST=mysql # 容器ip
- MYSQL_SERVICE_PORT=3306 # 使用容器内部端口
- MYSQL_SERVICE_DB_NAME=nacos_config # 创建nacos_config 数据库
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
- JVM_XMS=512m
- JVM_XMX=512m
- JVM_XMN=256m
- JVM_MS=64m
- JVM_MMS=256m
ports:
- "8849:8848"
networks:
- mynetwork
depends_on:
mysql:
condition: service_healthy
networks:
mynetwork: # 自定义网络
external: true
3 mysql验证
运行后先设置mysql
# 连接到 MySQL 检查数据库
docker exec -it nacos_mysql mysql -uroot -proot -e "SHOW DATABASES;"
# 检查用户权限
docker exec -it nacos_mysql mysql -uroot -proot -e "SELECT user,host FROM mysql.user;"
没有问题就导入nacos的数据-mysql-schema.sql
暂时无法在飞书文档外展示此内容
4 启动
重新启动nacos容器
前端查看
http://localhost:8849/nacos/