将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器
510 字
3 分钟
将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器
简介
最近我购买了一台新的服务器,需要把 Umami 服务器从旧服务器迁移到新服务器上。但我是用 Docker 安装的 Umami。
version: '3' services: umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - "3000:3000" environment: DATABASE_URL: postgresql://umami:umami@db:5432/umami DATABASE_TYPE: postgresql APP_SECRET: replace-me-with-a-random-string depends_on: db: condition: service_healthy restart: always db: image: postgres:15-alpine environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: umami volumes: - umami-db-data:/var/lib/postgresql/data restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 volumes: umami-db-data:迁移中最困难和重要的部分就是导出 Umami 的数据。我们有几种方法可以实现:
- 导出 Docker 卷(非常复杂)
- 导出数据库(我的选择)
- 复制整个路径(不推荐)
比较方法
首先,我们要知道 Umami 的数据是存储在卷(Volume)中的。因为 docker-compose.yml 指定了:
services: db: volumes: - umami-db-data:/var/lib/postgresql/data volumes: umami-db-data:如果我把路径挂载到容器里而不是卷,那就可以直接把路径复制到新机器上。比如:
services: db: volumes: - /root/umami/data:/var/lib/postgresql/data最后,我决定只导出数据库并导入到新实例中。让我们一步一步来。
迁移数据库
备份
docker exec umami-db-1 sh -c 'pg_dump --username=umami umami > /umami.sql' && \docker cp umami-db-1:/umami.sql /root/ && \docker exec umami-db-1 rm /umami.sql删除数据库
docker exec umami-db-1 psql --username=umami --dbname=postgres -c "DROP DATABASE IF EXISTS umami;"创建新的数据库
docker exec umami-db-1 psql --username=umami --dbname=postgres -c "CREATE DATABASE umami;"导入备份
docker cp /root/umami.sql umami-db-1:/umami.sql && \docker exec -i umami-db-1 psql --username=umami --dbname=umami -f /umami.sql && \docker exec umami-db-1 rm /umami.sql重启 Umami 实例:
docker compose downdocker compose up -d检查
现在可以检查数据库是否迁移成功了。打开新 Umami 的 URL,尝试用原来的账号登录。如果能登录,那数据库很可能迁移成功了(账号信息是存在数据库里的)。 为了进一步确认,你可以进入仪表盘,看看所有数据是否正常显示。 如果不正常,说明数据库没有成功迁移。你可以检查导出的备份文件(里面是否包含正确的数据?),以及导入的方式(看看备份文件是否成功导入到新的 Postgres)。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器
https://blog.leuxx.de/posts/11/相关文章智能推荐
1
解决Cloudflare Pages部署纪录过多导致无法删除项目的问题
常用脚本最近要在Cloudflare Pages删除项目遇到无法删除的问题 解决方法
2
Zouter HK BGP Global - Lite测评
VPS测评Zouter HK BGP Global - Lite 测评,包含延迟、路由、iperf3测速
3
通过 acme.sh 轻松申请 Let's Encrypt 通配符证书
常用脚本通过acme.sh申请通配符证书
4
OpenAI Codex安装配置中转API超详细教程 AI编程工具Codex实战配置文件常见错误总结
OpenAI安装,配置使用codex中转站完整教程。
5
永久免费kdns.fr域名 无需续费 支持绑定至CloudFlare
域名免费注册kdns.fr域名、无需绑卡、无需续费,支持绑定至CloudFlare。
随机文章随机推荐
