服务器迁移及docker部署-元一软件
背景这段时间负责公司运维工作多个私有云服务器快到期了因此线上服务和数据需要迁移备份但是如果在同一台机器上部署多个实例难免有端口冲突为了做到相互隔离和维护方便docker可能是最佳选择于是开始了我的迁移之旅备份服务器迁移过程中最重要的是数据为了确保数据不丢失最好是晚上停机备份# redis拷贝rdb文件和conf配置文件# mysql全量备份mysqldump --all-databases-uroot-pmysql_backup.sql# mysql容器备份配置文件/etc/mysql/mysql.conf.d/mysqld.cnfdockerexec-itid(container)mysqldump --all-databases-uroot-pmysql_backup.sql# 导出单个库如果在db_name 前加--databases 最终在xxx.sql里面会有create database db_name;和use db_name;语句dockerexec-itid(container)mysqldump-uroot-pdb_namemysql_backup.sql# mongo备份整库到指定文件mongodump--authenticationDatabaseadmin-uadmin-p123-dxc_log--archive./xc_log.archive# 数据量大时可使用gzip压缩mongodump--authenticationDatabaseadmin-uadmin-p123-dxc_log--port27017-o./mongo_back/--gzip# mongodb容器导出数据dockerexecmongo-cexec mongodump -uadmin -p123456 --authenticationDatabaseadmin -d xc_log --archive./xc_log.archive[mongodump命令详解]备份文件传输可使用scp命令和xftp软件推荐使用rsync同步整个项目目录# 将backup文件夹传送到远程的目录可列出多个回车后需要输入密码scp-r backup rootip:/workspace/shlg# 传送文件scp mysql_backup.sql mysqld.conf rootip:/workspace/shlg部署服务器环境配置如 gitnginx等这里不多讲docker安装安装过程请自行搜索[Ubuntu安装docker]创建自定义网络虚拟网桥这样容器可以与同一网络中的其他容器通信# 默认为 bridge 模式dockernetwork create tongji_net# 打印所有网络dockernetworkls# 查看网络信息dockernetwork inspect tongji_net关于network的更多解释见数据库redis如有备份文件请把rdb文件拷贝至data目录下# 拉取合适的版本dockerpull redis:5.0-alpine# 生成容器dockerrun-itd--nameshlg_redis-v/workspace/shlg/redis/data:/data-v/workspace/shlg/redis/redis.conf:/etc/redis/redis.conf--networktongji_net--ip172.18.0.25--restartalways redis:5.0-alpine配置文件需改为如下设置# 关闭守护进程否则起不来 daemonize no # 生产上可不用修改默认为127.0.0.1仅限本机访问 bind 0.0.0.0mysql如需设置时区请加上-e TZAsia/Shanghai# --name 容器名称# -p 端口映射# -v 目录挂载# -e 设置root密码等# --network 绑定网络# --ip 绑定ipdockerrun-d--nameshlg_mysql-p3406:3306-v/workspace/shlg/mysql/data:/var/lib/mysql-v/workspace/shlg/mysql/my.cnf:/etc/my.cnf-eMYSQL_ROOT_PASSWORD123456--networktongji_net--ip172.18.0.24 mysql:5.7.31数据恢复dockerexec-itid(container)mysql-uroot-p123456./mysql_backup.sql# 数据库实例恢复单数据库mysql-uroot-pqd_xc_v3./qd_xc_v3.sql# 数据库实例恢复所有数据库mysql-uroot-p./mysql_backup.sql用户角色配置# 5.7之前的版本 grant all privileges on *.* to test172.18.0.% identified by password with grant option; # 如果想配置某个数据库的权限改成 grant all privileges on database_name.* to test172.18.0.% identified by password with grant option; flush privileges; show grants for test127.0.0.1; # 8.0之后的版本 CREATE USER test% IDENTIFIED BY password; GRANT ALL PRIVILEGES ON *.* TO test% WITH GRANT OPTION; FLUSH PRIVILEGES; # 撤销权限 revoke shutdown on *.* from user%;mongodbdocker run-itd--name shlg_mongodb-v/workspace/shlg/mongodb/data:/data/db--network tongji_net--ip172.18.0.26mongo:4.0数据恢复# 此命令暂未生效dockerexec-ishlg_mongodb mongorestore-uadmin-p123--authenticationDatabaseadmin-dxc_log--gzip/workspace/shlg/mongodb/xc_log# 有效dockerexec-ishlg_mongodbsh-cexec mongorestore -u admin -p 123 --authenticationDatabase admin --archive/workspace/shlg/xc_log.archive可以直接进入容器内部无需密码设置用户角色docker exec -it shlg_mongodb mongo use admin db.createUser({user:admin,pwd:mongo123,roles:[{role:root,db:admin}]}) use xc_log db.createUser({user:shlg,pwd:123456,roles:[{role:dbOwner,db:xc_log}]})然后在/etc/mongod.conf文件的 security 下加上下面的代码重启服务即可生效security: authorization: enabled[mongorestore命令]node服务这里有多个node服务exports、log、join、xiaochuang_3.0shared是公共字典将它们部署到一个容器内需要打包成镜像再根据镜像生成容器在项目同级目录下新建Dockerfile文件内容如下FROM node:10.24-alpine ENVTZAsia/Shanghai RUN apk updateapkaddtzdataecho${TZ}/etc/timezoneln-sf/usr/share/zoneinfo/${TZ}/etc/localtimerm/var/cache/apk/* COPY exports /workspace/exports COPY log /workspace/log COPYjoin/workspace/join COPY xiaochuang_3.0 /workspace/xiaochuang_3.0 COPY shared /workspace/shared COPY script.sh /workspace/script.sh ENTRYPOINT[./workspace/script.sh]注意如果系统的文件存储在项目所在目录下且存的是绝对地址的话容器内的项目根目录必须保持和原系统一致否则会找不到文件。配置容器内项目启动脚本当前目录新建 script.sh 内容如下#!/bin/shcd/workspace/lognpmrun start-prodcd/workspace/exportsnpmrun start-prodcd/workspace/joinnpmrun start-prodcd/workspace/xiaochuangnpmrun start-prod给当前文件新增可执行权限chmod 755 script.sh在项目上一级目录新建init.sh名字自定义内容如下# 删除旧镜像docker rmi shlg_node:old# 标记新镜像为旧镜像docker tag shlg_node:latestshlg_node:olddocker rmi shlg_node:latest# 根据该目录下的Dockerfile打包镜像如果打包过程报错提示包无法下载请加上 --networkhostdocker build-t shlg_node:latest/workspace/shlg/workspace/--networkhost# 生成新的容器docker rm-f shlg_nodedocker run-d--name shlg_node-v/workspace/shlg/workspace/xiaochuang_3.0:/workspace/xiaochuang-v/workspace/shlg/workspace/exports:/workspace/exports-v/workspace/shlg/workspace/log:/workspace/log-v/workspace/shlg/workspace/join:/workspace/join-v/workspace/shlg/workspace/shared:/workspace/shared-v/workspace/shlg/workspace/logs:/root/logs--network tongji_net--ip172.18.0.52shlg_node:latest# 查看最新20条并跟踪启动日志docker logs--tail20-f shlg_node如果遇到容器无法启动的情况可能是因为docker容器运行必须有一个前台进程如果没有前台进程执行容器认为空闲就会自行退出。xiaochuang_3.0是项目主体所以得去掉package.json 中启动命令start-prod里的--daemon选项。如果后端项目要连接宿主机的数据库请把连接信息中的host改为该容器的网关ip可使用docker inspect container查看Gateway设置即为虚拟网卡ip确保路径映射和ip无误后最后运行脚本sh init.sh稍等几分钟中途没有报错的话容器自动运行最后大功告成~_~

相关新闻

Python语言基础:1_完整详细介绍

Python语言基础:1_完整详细介绍

Python 完整详细介绍一、Python 基础概述1. 起源与开发者Python 由荷兰程序员 吉多・范罗苏姆(Guido van Rossum) 在 1989 年圣诞节期间开发,初衷是替代 ABC 语言,追求简洁易读、人性化的编程语言。 名称取自喜剧《蒙提・派森》&a…

2026/7/24 23:52:17 阅读更多 →
《驾驭你的AI同事:WorkBuddy深度精通》035:17.1 数据主权与合规

《驾驭你的AI同事:WorkBuddy深度精通》035:17.1 数据主权与合规

《驾驭你的AI同事:WorkBuddy深度精通》035:17.1 数据主权与合规 本文是《唤醒你的 AI 同事:WorkBuddy 全栈指南》系列 卷二(深度精通) 的 第 35 篇。卷一带你"上手",卷二带你"看穿"——这一篇,我们进入企业版的"红线区":数据主权与合规,…

2026/7/24 4:11:19 阅读更多 →
Web Application Basics

Web Application Basics

Web Application Basics URL Scheme:often https User(rare) Host/Domain:website address typosquatting:mimic a website to trick people into giving up sensitive info. Port:usually 80-http,443-https Path:file path Query String:have ?—Modify-able Fragment—M…

2026/7/23 11:32:08 阅读更多 →

最新新闻

整理的现代 C++ 6 大核心前置知识点详解。每一个知识点都配有可直接运行的完整 C++11/14 代码示例和关键逻辑注释

整理的现代 C++ 6 大核心前置知识点详解。每一个知识点都配有可直接运行的完整 C++11/14 代码示例和关键逻辑注释

整理的现代 C 6 大核心前置知识点详解。每一个知识点都配有可直接运行的完整 C11/14 代码示例和关键逻辑注释。1. RAII(资源获取即初始化) 核心概念 RAII(Resource Acquisition Is Initialization)是现代 C 管理资源(内…

2026/7/26 15:13:59 阅读更多 →
针对《C++并发编程实战》这本书,定制一份循序渐进的通关路线图

针对《C++并发编程实战》这本书,定制一份循序渐进的通关路线图

针对《C并发编程实战》(C Concurrency in Action)这本书,定制一份循序渐进的通关路线图。 这份规划分为前置补强和本书拆解两个阶段,帮你避开底层的“硬骨头”,用最平滑的曲线掌握 C 多线程开发。阶段一:前…

2026/7/26 15:13:59 阅读更多 →
Windows 11优化实战指南:5个核心技巧让你的系统更高效

Windows 11优化实战指南:5个核心技巧让你的系统更高效

Windows 11优化实战指南:5个核心技巧让你的系统更高效 【免费下载链接】windows11 🌎 Windows 11 Settings, Tweaks, Scripts 项目地址: https://gitcode.com/GitHub_Trending/wi/windows11 如果你正在寻找一种无需第三方软件就能优化Windows 11系…

2026/7/26 15:13:59 阅读更多 →
Qwen3.8-Max-Preview全栈开发实战:AI编程助手如何优化Web开发流程

Qwen3.8-Max-Preview全栈开发实战:AI编程助手如何优化Web开发流程

如果你还在为代码调试、API文档理解、前端样式调整这些重复性工作耗费大量时间,那么阿里云最新发布的 Qwen3.8-Max-Preview 版本值得你重点关注。这次更新最核心的变化不是参数量的简单堆叠,而是对 Web 开发全流程的深度优化——从需求分析到前端实现&am…

2026/7/26 15:13:59 阅读更多 →
深度学习卷积运算优化:从算法到硬件实践

深度学习卷积运算优化:从算法到硬件实践

1. 卷积运算的本质与计算挑战卷积运算作为深度学习的核心操作,其计算效率直接影响模型推理和训练速度。传统卷积计算需要处理大量乘积累加(MAC)操作,以3x3卷积核处理224x224输入图像为例,单通道计算量就高达224x224x3x…

2026/7/26 15:13:59 阅读更多 →
10个实用Pywikibot脚本案例:自动化维基百科编辑从未如此简单

10个实用Pywikibot脚本案例:自动化维基百科编辑从未如此简单

10个实用Pywikibot脚本案例:自动化维基百科编辑从未如此简单 【免费下载链接】pywikibot A Python library that interfaces with the MediaWiki API. This is a mirror from gerrit.wikimedia.org. Do not submit any patches here. See https://www.mediawiki.org…

2026/7/26 15:12:59 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻