我用docker运行了nocobase,并配置了系统,现在我想将该修改后的系统通过docker部署到云服务器上,是否需要打镜像?该如何操作?
以下是ChatGPT的回答,其中方法二我已经验证可行。
你已经在本地通过 Docker 运行并配置了 NocoBase,现在希望将当前的系统状态(包括配置、插件、数据等)迁移并部署到云服务器上,这可以通过以下两种方式实现:
✅ 方法一:打包为镜像,部署到云服务器(适合可复制部署)
🧠 适合场景
你希望将本地环境“打包”成一个镜像,在其他服务器上直接部署成一样的系统,且不会频繁变动。
📦 步骤如下:
1. 找到你当前容器运行的数据挂载方式
你可能是用 docker run
或 docker-compose
启动的,需要确认数据是否保存在容器内部还是挂载到本地卷中。
1 | docker inspect <你的容器名或ID> |
查看 Mounts
部分,如果是本地挂载的目录(bind mount 或 volume),则需要把这些数据一起打包。
2. 提取当前容器状态并打包为镜像
1 | docker commit <正在运行的容器ID> my-nocobase-image:v1 |
这个命令会把当前容器的文件系统“快照”成一个新的镜像。
3. 将镜像保存为文件(可传输)
1 | docker save -o my-nocobase-image.tar my-nocobase-image:v1 |
把 my-nocobase-image.tar
拷贝(用 scp 或 rsync)到你的云服务器。
4. 在云服务器导入并运行
1 | docker load -i my-nocobase-image.tar |
根据你的配置调整端口、挂载路径或环境变量。
✅ 方法二:打包数据+配置,使用官方镜像重建(适合持续更新)
🧠 适合场景
你使用的是官方 NocoBase 镜像,只是更改了配置(比如添加插件、修改数据等),不希望打包镜像,只想备份数据并迁移。
步骤:
前提:
该项目有两个容器,镜像为:nocobase和mysql。故,项目迁移到云服务器时,需要同时迁移 应用镜像 + 数据库数据,推荐备份数据+docker compose部署。
执行docker inspect container-name后,发现Mounts中使用了bind 挂载。故,NocoBase 项目中有一部分关键数据(如上传文件、缓存、插件存储等)存放在本地挂载目录中,并不会包含在
docker commit
镜像中。
1 | "Mounts": [ |
本地目录:/Users/colinlee/Documents/software/xc_project/storage
容器内路径:/app/nocobase/storage
本地需要的文件
- docker-compose.yml
- mysql_backup.sql
- storage/文件夹
操作步骤
- 备份数据库
1 | docker exec -i mysql-1 mysqldump -uroot -p'yourpassword' --all-databases > mysql_backup.sql |
- 复制本地挂载目录
1 | cp -r /Users/colinlee/Documents/software/xc_project/storage . |
- 上传所有文件到云服务器
1 | scp -r docker-compose.yml mysql_backup.sql storage/ user@your-server-ip:/home/user/nocobase-deploy/ |
- 在云服务器运行容器
1 | cd /home/user/nocobase-deploy/ |
- 还原 MySQL 数据库
1 | docker exec -i mysql-1 mysql -uroot -p'yourpassword' < mysql_backup.sql |
docker-compose.yml
1 | networks: |
✅ 总结对比
方式 | 是否打镜像 | 优点 | 缺点 |
---|---|---|---|
方法一:打包镜像 | ✅ | 简单快速、完全保留现场 | 镜像大,不便频繁更新 |
方法二:迁移数据 | ❌ | 更灵活、便于版本管理 | 需要理解 NocoBase 的数据存储结构 |
你可以根据实际需要选择方式。如果你是初次部署,推荐用方法二(数据迁移+官方镜像),更便于未来维护。如果你已经本地装了很多插件、改了很多文件,不方便复现,就选方法一。
CentOS上安装docker
官方仓库安装
在 CentOS 上安装 Docker 的步骤如下:
更新系统:
1
sudo yum update -y
安装必要的依赖:
1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 仓库:
1
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker:
1
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动并启用 Docker 服务:
1
2sudo systemctl start docker
sudo systemctl enable docker验证安装:
1
docker --version
(可选)允许非 root 用户运行 Docker:
1
sudo usermod -aG docker $USER
注销并重新登录以应用权限。
2. 安装必要的依赖时可能遇到报错:Error: Failed to download metadata for repo ‘appstream’
表明无法解析 mirrorlist.centos.org,可能是网络问题或 CentOS 8 仓库已停止维护,可以使用阿里云镜像
- 备份仓库配置:
1 | sudo mv /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo.bak |
- 创建新的 AppStream 仓库文件:
1 | sudo vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo |
- 添加:
1 | [appstream] |
- 清理并更新缓存:
1 | sudo yum clean all |
2-1. 安装必要的依赖时可能遇到报错:Error: Failed to download metadata for repo ‘baseos’:
报错显示 baseos 仓库仍然尝试访问已停止维护的 mirrorlist.centos.org,导致无法下载元数据。AppStream 仓库已成功切换,但 BaseOS 仓库仍需修复。可以使用阿里云镜像。
备份现有 BaseOS 仓库配置:
sudo mv /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.bak
创建新的 BaseOS 仓库文件:
sudo vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
添加:
1
2
3
4
5
6[baseos]
name=CentOS-8 - BaseOS
baseurl=http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-8清理并更新缓存
1
2sudo yum clean all
sudo yum makecache
2-2. 安装必要的依赖时可能遇到报错:Error: Failed to download metadata for repo ‘extras’:
报错表明 BaseOS 和 AppStream 仓库已成功切换到阿里云镜像,但 extras 仓库仍然指向已停止维护的 mirrorlist.centos.org,导致元数据下载失败。需要更新 extras 仓库的配置。可以使用阿里云镜像。
备份现有 BaseOS 仓库配置:
1
sudo mv /etc/yum.repos.d/CentOS-Linux-Extras.repo /etc/yum.repos.d/CentOS-Linux-Extras.repo.bak
创建新的 BaseOS 仓库文件:
1
sudo vi /etc/yum.repos.d/CentOS-Linux-Extras.repo
添加:
1
2
3
4
5
6[extras]
name=CentOS-8 - Extras
baseurl=http://mirrors.aliyun.com/centos/8/extras/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-8清理并更新缓存
1
2sudo yum clean all
sudo yum makecache
3. 重试安装命令
修复仓库后,重新运行以下命令,也可以回到第二步骤:
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
4. 后续安装 Docker
如果以上步骤成功,继续安装 Docker:
1 | sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
5. 更换 Docker 镜像源
如果 Docker Hub 访问受限(例如在中国大陆可能因网络限制导致),可以配置国内镜像源(如阿里云、华为云)加速拉取镜像。
- 配置阿里云镜像源
编辑 Docker 配置文件
1
sudo mkdir -p /etc/docker sudo vi /etc/docker/daemon.json
添加以下内容(替换your-aliyun-id为你的阿里云账号 ID 或使用公共镜像地址)
1 | { |