一、环境准备1. 安装 Docker 和 Docker Compose# 安装 Docker yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io # 启动 Docker systemctl start docker systemctl enable docker # 安装 Docker Composev2 插件方式 mkdir -p /usr/local/lib/docker/cli-plugins curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \ -o /usr/local/lib/docker/cli-plugins/docker-compose chmod x /usr/local/lib/docker/cli-plugins/docker-compose # 验证 docker compose version注意如果你的yum install docker-ce卡在下载阶段速度非常慢而且已经开始报Connection reset by peer错误。️ 解决方案换成国内镜像源先CtrlC中断当前卡住的安装然后换阿里云的 Docker 源。# 1. 备份旧的源 mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo.bak # 2. 换成阿里云源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3. 重新生成缓存 yum makecache fast # 4. 重新安装 yum install -y docker-ce docker-ce-cli containerd.io2. 创建目录结构mkdir -p /data/docker/xxx cd /data/docker/xxx # 创建各服务的挂载目录 mkdir -p /data/mysql/{logs,data} mkdir -p /data/redis/{conf,data} mkdir -p /data/docker/mongodb/{data,conf,logs} mkdir -p /data/docker/emqx/{etc,data,log} mkdir -p ./nginx/{conf,logs,ssl,html} mkdir -p ./rabbitmq/plugin mkdir -p ./xxx/{eureka,gateway,auth2,auth-center} mkdir -p ./xxx/modules/{user-saas,device-saas,iotcard}3. 准备配置文件1. 写 MySQL 配置文件cat /data/mysql/my.cnf EOF [mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci default-time-zone8:00 lower-case-table-names1 innodb_buffer_pool_size80M EOF2. 写 Redis 配置文件mkdir -p /data/redis/conf cat /data/redis/conf/redis.conf EOF requirepass 你的密码 appendonly yes EOF3. 写 MongoDB 配置文件mkdir -p /data/docker/mongodb/conf cat /data/docker/mongodb/conf/mongod.conf EOF storage: dbPath: /data/db net: bindIp: 0.0.0.0 port: 27017 EOF✅ 验证是否写入成功# 看 MySQL 配置 cat /data/mysql/my.cnf # 看 Redis 配置 cat /data/redis/conf/redis.conf # 看 MongoDB 配置 cat /data/docker/mongodb/conf/mongod.conf二、准备各服务的 Dockerfile 和 jar 包每个 服务都需要自己的dockerfile和对应的 jar 包。cd /data/docker/xxx/yyy cat dockerfile EOF FROM openjdk:8-jre WORKDIR /home/jzh COPY ./你的jar包名.jar /home/xxx/你的jar包名.jar ENTRYPOINT [java, -jar, /home/xxx/你的jar包名.jar]三、启动顺序重要把docker-compose.yml放入/data/docker/xxx中第一阶段基础设施cd /data/docker/xxx # 启动 MySQL、Redis、MongoDB docker compose up -d mysql容器名 redis容器名 mongodb容器名 # 等 30 秒确认都起来了 docker compose ps注意出现了错误Docker 拉取镜像超时了因为连不上 Docker Hub。️ 解决方案手动拉取 打标签最可靠用国内镜像站直接拉然后打回官方标签# 拉取 docker pull docker.m.daocloud.io/library/mysql:5.7 docker pull docker.m.daocloud.io/library/redis:6.2.6 docker pull docker.m.daocloud.io/library/mongo:4.2.7 # 打回官方标签把镜像名改回 compose 文件里写的名字 docker tag docker.m.daocloud.io/library/mysql:5.7 mysql:5.7 docker tag docker.m.daocloud.io/library/redis:6.2.6 redis:6.2.6 docker tag docker.m.daocloud.io/library/mongo:4.2.7 mongo:4.2.7 # 再启动 docker compose up -d lq-mysql lq-redis mongodb第二阶段中间件# 启动 EMQX、RabbitMQ docker compose up -d emqx容器名 rabbitmq容器名 # 等 30 秒 docker compose ps注意又卡在registry-1.docker.io上了。加速器对emqx和rabbitmq这两个镜像没生效Docker 还是去连了官方源。️ 解决方法手动拉取 打标签1.# 拉取 emqx docker pull docker.m.daocloud.io/emqx/emqx-enterprise:5.0.4 # 拉取 rabbitmq docker pull docker.m.daocloud.io/library/rabbitmq:4.2.0-management 2.# 备选镜像站 docker pull docker.1panel.live/emqx/emqx-enterprise:5.0.4 docker pull docker.1panel.live/library/rabbitmq:4.2.0-management 3.# 或者拉取 docker pull hub.rat.dev/emqx/emqx-enterprise:5.0.4 docker pull hub.rat.dev/library/rabbitmq:4.2.0-management #打回官方标签 docker tag hub.rat.dev/emqx/emqx-enterprise:5.0.4 emqx/emqx-enterprise:5.0.4 docker tag hub.rat.dev/library/rabbitmq:4.2.0-management rabbitmq:4.2.0-management #再启动 docker compose up -d emqx lq-rabbitmq第三阶段注册中心和网关# 启动 Eureka docker compose up -d jzh-eureka # 等 30 秒确认 Eureka 起来了 docker compose logs -f jzh-eureka # 启动 Gateway docker compose up -d jzh-gateway第四阶段业务服务# 启动认证相关 docker compose up -d jzh-auth2 jzh-auth-center # 启动业务模块 docker compose up -d jzh-user-saas jzh-device-saas jzh-iotcard # 启动 Nginx docker compose up -d lq-nginx四、验证部署1. 确认所有容器在运行docker compose ps2. 确认端口监听ss -tlnp | grep -E 3306|6379|27017|1883|8883|18083|5672|15672|9800|9801|9802|9803|9804|9805|98063. 逐个测试服务# Eureka curl -v http://localhost:9800/ # Gateway curl -v http://localhost:9801/ # Auth Center curl -v http://localhost:9803/ # Device SaaS curl -v http://localhost:9805/ # Nginx curl -v http://localhost/4.看日志# 看某个服务的日志 docker compose logs -f jzh-device-saas # 看所有服务的日志 docker compose logs -f