
本文将详细介绍如何将现有软件系统从传统虚拟化迁移到Docker容器化部署涵盖后端、前端、Nginx、Nacos、Redis、MySQL等组件的完整部署流程。1. Docker环境准备1.1 安装Docker和Docker Composesudo -i # 输入密码切换root账号 sudo apt update sudo apt install docker.io docker-compose1.2 配置Docker镜像源nano /etc/docker/daemon.json添加以下内容{ registry-mirrors: [ https://docker.m.daocloud.io, https://docker.1ms.run, https://hub-mirror.c.163.com, https://docker.nju.edu.cn ] }保存后重启Docker服务systemctl restart docker1.3 拉取所需镜像docker pull nacos/nacos-server:v2.3.2 docker pull mysql:5.7 docker pull redis:5.0.14 docker pull openjdk:8-jdk-alpine docker pull nginx:1.27.1-alpine2. 网络规划与创建2.1 网络结构设计容器IP容器端口主机端口容器名备注192.168.17.1133063306test-mysqlMySQL数据库192.168.17.1263796379redis-masterRedis主节点192.168.17.1363796380redis-slave1Redis从节点1192.168.17.1463796381redis-slave2Redis从节点2192.168.17.152637926379redis-sentinel1Redis哨兵1192.168.17.162637926380redis-sentinel2Redis哨兵2192.168.17.172637926381redis-sentinel3Redis哨兵3192.168.17.2088488848jsc-nacosNacos配置中心192.168.17.2098489848jsc-nacosNacos gRPC端口192.168.17.2098499849jsc-nacosNacos gRPC端口192.168.17.3080808080metro-operations-service后端服务192.168.17.318080frontend-nginx前端Nginx192.168.17.32808000nginx-httpsHTTP转HTTPS192.168.17.32443443nginx-httpsHTTP转HTTPS2.2 创建Docker网络docker network create --driverbridge --subnet192.168.17.0/24 --gateway192.168.17.1 yyjsc-net3. MySQL数据库部署3.1 创建数据卷docker volume create mysql_data3.2 运行MySQL容器docker run -d -p 3306:3306 --name test-mysql \ --networkyyjsc-net \ --ip192.168.17.11 \ -e MYSQL_ROOT_PASSWORDroot \ -e MYSQL_DATABASEdigital_operator_platform \ -e MYSQL_USERadmin \ -e MYSQL_PASSWORDx5Pvyjzc7v4bDzB0 \ -v mysql_data:/var/lib/mysql \ mysql:5.74. Nacos配置中心部署4.1 创建Nacos数据库# 进入MySQL容器 docker exec -it test-mysql bash # 连接到MySQL mysql -u root -p # 输入密码root执行SQL语句-- 创建Nacos数据库 CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建Nacos用户 CREATE USER nacos% IDENTIFIED BY NU9(njweqj2dsUsd; -- 授权 GRANT ALL PRIVILEGES ON nacos.* TO nacos%; -- 刷新权限 FLUSH PRIVILEGES; -- 退出 EXIT;4.2 准备Nacos配置# 创建配置目录 mkdir -p /home/nacos/conf # 复制配置文件根据实际情况调整路径 cp /mnt/hgfs/share/nacos/conf/application.properties /home/nacos/conf/4.3 运行Nacos容器docker run -d \ --name jsc-nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --network yyjsc-net \ --ip 192.168.17.20 \ -v /home/nacos/conf/application.properties:/home/nacos/conf/application.properties \ -e MODEstandalone \ -e JVM_XMS512m \ -e JVM_XMX512m \ nacos/nacos-server:v2.3.24.4 初始化Nacos数据库# 从容器内导出SQL文件 docker exec -it jsc-nacos /bin/bash cd /home/nacos/conf/ docker cp jsc-nacos:/home/nacos/conf/mysql-schema.sql /home/nacos/访问Nacos控制台http://服务器IP:8848/nacos创建命名空间并导入配置。5. Redis集群部署5.1 准备配置文件# 创建目录结构 mkdir -p redis-sentinel/{redis-master,redis-slave1,redis-slave2,sentinel1,sentinel2,sentinel3} # 复制配置文件根据实际情况调整路径 cd /mnt/hgfs/share cp -r redis-sentinel /home5.2 使用Docker Compose启动Redis集群cd /home/redis-sentinel docker-compose up -d5.3 验证集群状态# 检查主从复制 docker exec -it redis-master redis-cli -a QvzVGDPVI9s7tmK3 info replication # 检查哨兵状态 docker exec -it redis-sentinel1 redis-cli -p 26379 info Sentinel6. 前端与Nginx部署6.1 创建目录结构# 创建日志目录 mkdir -p /opt/logs/nginx chmod -R 755 /opt/logs/nginx # 创建应用目录 mkdir -p /opt/package/bi/public/projects/ chmod -R 755 /opt/package/bi/public/projects/ # 设置权限 chown -R root:root /opt/logs/nginx6.2 部署前端应用cd /opt/app/h5/frontend-docker docker-compose up -d6.3 验证部署# 检查容器状态 docker ps -a --filter namefrontend-nginx # 测试Nginx配置 docker exec frontend-nginx nginx -t7. 后端服务部署7.1 准备后端应用# 创建应用目录 mkdir -p /opt/app # 复制应用文件根据实际情况调整路径 cp -r /mnt/hgfs/share/metro-operations-service /opt/app cd /opt/app/metro-operations-service7.2 构建和启动服务# 构建Docker镜像 docker-compose build # 启动服务 docker-compose up -d # 查看状态 docker-compose ps # 查看日志 docker logs -tail 100 metro-operations-service8. HTTPS Nginx部署8.1 生成SSL证书# 运行临时Nginx容器 docker run -d \ --name nginx-https \ --network yyjsc-net \ --ip 192.168.17.32 \ -p 8000:80 \ -p 4443:443 \ nginx:1.27.1-alpine # 进入容器 docker exec -it nginx-https sh # 更新源并安装openssl sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositories apk update apk add openssl # 创建SSL目录 mkdir -p /etc/ssl/certs mkdir -p /etc/ssl/private # 生成自签名证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/nginx-selfsigned.key \ -out /etc/ssl/certs/nginx-selfsigned.crt \ -subj /CCN/STBeijing/LBeijing/OTest/OUTest/CN192.168.17.32 \ -addext subjectAltNameIP:192.168.17.32 # 测试Nginx配置 nginx -t # 重载配置 nginx -s reload9.部署验证完成以上所有步骤后验证程序前端: 访问http://服务器IP/console/digitaltwins-wuxis1-admin/#/login后端: apifox访问https://服务器IP/metro-operations-service/login