目录
部署概述
一:环境准备
1.1 系统要求
1.1.1系统更新与基础工具安装
1.2 安装 Docker
1.3 创建部署目录
编辑
二:服务部署
2.0 创建 Docker 网络
编辑
2.1 部署 MySQL 8.0.36
2.1.1启动 MySQL并进行验证
编辑
2.2 部署 PostgreSQL 16.4
2.1.1启动 PostgreSQL
编辑
2.3 部署 Redis 7.2.5
2.3.1启动 Redis并验证
编辑
2.4 Nacos 数据库准备
2.4.1下载 Nacos 完整 SQL 脚本
2.4.2检查当前数据库状态
2.4.3重新初始化数据库
2.4.5验证数据库表创建完整
编辑
2.5 启动 Nacos 容器
2.5.1监控 Nacos 启动过程
2.6防火墙配置,开放必要端口
2.7验证所有服务并查看所有服务状态
2.8获取访问地址
三:管理脚本
3.1 创建统一管理脚本
3.1.1测试管理脚本
四:服务信息汇总
4.1 服务访问信息
4.2 数据持久化目录
4.3 管理命令汇总
五:故障排除
六:后续维护
七、附录
7.1 Nacos 完整表结构清单
7.2 Docker 常用命令速查
7.3 端口汇总
部署概述
-
本文档记录了在 CentOS/RHEL 系统上使用 Docker 部署内网微服务基础设施的完整过程,
-
包括:(MySQL 8.0.36 、PostgreSQL 16.4 、Redis 7.2.5 、Nacos 2.4.0(服务注册与配置中心))
一:环境准备
1.1 系统要求
-
服务
端口
说明
版本
MySQL 3306 关系型数据库,存储业务数据 8.0.36 PostgreSQL 5432 备选关系型数据库 16.4 Redis 6379 高性能缓存数据库 7.2.5 Nacos 8848/9848/9849 服务发现和配置中心 2.4.0 -
操作系统:CentOS Stream 9
-
IP: 192.168.11.93/23
-
RHEL 8+
-
Docker:20.10+
-
内存:32GB+
-
磁盘:500GB
1.1.1系统更新与基础工具安装
# 查看系统IP(确认当前环境)
ip a
# 输出示例:inet 192.168.11.93/23 brd 192.168.11.255 scope global dynamic ens33
# 更新系统包
yum update -y
# 安装基础工具
yum install -y curl wget vim net-tools tree lsof
# 安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 安装 Docker
Docker是容器化部署的基础,以下是完整的安装和配置过程(在国内下载Docker镜像可能会很慢,配置镜像加速可以大幅提升下载速度):
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 官方仓库
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker 及相关组件
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动 Docker 并设置开机自启
systemctl start docker
# 验证安装
docker –version
# 输出示例:Docker version 29.3.0, build 5927d80
docker compose version
# 输出示例:Docker Compose version v5.1.0
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
\”registry-mirrors\”: [\”https://hub.rat.dev/\”,\”https://docker.xuanyuan.me\”, \”https://docker.m.daocloud.io\”,\”https://dockerproxy.com\”],
\”dns\”: [\”114.114.114.114\”,\”8.8.8.8\”],
\”max-concurrent-downloads\”: 30,
\”data-root\”: \”/data/docker\”,
\”insecure-registries\”:[\”docker.oa.com:8080\”]
}
EOF
# 重启 Docker 使配置生效
systemctl stop docker
systemctl daemon-reload
systemctl start docker
1.3 创建部署目录
建立规范的数据目录,便于后续管理和备份:
# 创建主部署目录
mkdir -p /opt/deploy
cd /opt/deploy
# 创建各服务的数据目录
mkdir -p mysql/{data,logs,conf}
mkdir -p postgres/{data,logs,conf}
mkdir -p redis/{data,logs,conf}
mkdir -p nacos/{data,logs,conf}
mkdir -p backups
# 查看目录结构
tree /opt/deploy
二:服务部署
2.0 创建 Docker 网络
创建专用的Docker网络,使容器之间可以通过容器名直接通信,避免使用IP地址:
# 创建容器间通信网络
docker network create app-network
# 输出示例:a7dc544a1e33fe134f17d2b0c6de0c13d374da6f4c8d58159a19b6db7a0ff726
# 验证网络创建
docker network ls | grep app-network
# 输出示例:a7dc544a1e33 app-network bridge local

2.1 部署 MySQL 8.0.36
MySQL作为主要的关系型数据库,用于存储业务数据和Nacos的配置信息:
cd /opt/deploy
cat > docker-compose-mysql.yml << \’EOF\’
version: \’3.8\’
services:
mysql:
image: mysql:8.0.36
container_name: mysql-8.0.36
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: nacos
MYSQL_USER: nacos
MYSQL_PASSWORD: 123456
TZ: Asia/Shanghai
ports:
– \”3306:3306\”
volumes:
– ./mysql/data:/var/lib/mysql
– ./mysql/logs:/var/log/mysql
– ./mysql/conf:/etc/mysql/conf.d
command:
– –default-authentication-plugin=mysql_native_password
– –character-set-server=utf8mb4
– –collation-server=utf8mb4_unicode_ci
networks:
– app-network
networks:
app-network:
external: true
EOF
2.1.1启动 MySQL并进行验证
cd /opt/deploy
# 启动 MySQL 容器
docker compose -f docker-compose-mysql.yml up -d
# 输出示例:
# WARN[0000] /opt/deploy/docker-compose-mysql.yml: the attribute `version` is obsolete
# [+] Running 2/2
# ✔ Image mysql:8.0.36 Pulled
# ✔ Container mysql-8.0.36 Started
# 等待 MySQL 完全启动
sleep 15
————————————————
# 查看容器状态
docker ps | grep mysql
# 输出示例:7dbf07b63ac5 mysql:8.0.36 \”docker-entrypoint.s…\” Up 2 minutes 0.0.0.0:3306->3306/tcp mysql-8.0.36
# 测试连接
docker exec mysql-8.0.36 mysql -uroot -p123456 -e \”SHOW DATABASES;\”
# 输出示例:
# Database
# information_schema
# mysql
# nacos
# performance_schema
# sys
2.2 部署 PostgreSQL 16.4
PostgreSQL作为备选数据库,适用于需要复杂查询和数据完整性的场景:
cat > docker-compose-postgres.yml << \’EOF\’
services:
postgres:
image: postgres:16.4
container_name: postgres-16.4
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
POSTGRES_DB: postgres
TZ: Asia/Shanghai
ports:
– \”5432:5432\”
volumes:
– ./postgres/data:/var/lib/postgresql/data
– ./postgres/logs:/var/log/postgresql
networks:
– app-network
networks:
app-network:
external: true
EOF
2.1.1启动 PostgreSQL
cd /opt/deploy
# 启动 PostgreSQL 容器
docker compose -f docker-compose-postgres.yml up -d
# 输出示例:
# [+] Running 2/2
# ✔ Image postgres:16.4 Pulled
# ✔ Container postgres-16.4 Started
# 等待启动
sleep 10
2.3 部署 Redis 7.2.5
Redis作为高性能缓存数据库,用于提升系统响应速度:
cat > docker-compose-redis.yml << \’EOF\’
services:
redis:
image: redis:7.2.5
container_name: redis-7.2.5
restart: always
command: redis-server –requirepass 123456 –appendonly yes
ports:
– \”6379:6379\”
volumes:
– ./redis/data:/data
– ./redis/logs:/logs
networks:
– app-network
networks:
app-network:
external: true
EOF







