【问题标题】:Part of Drone.io configuration were lost after reboot the server重启服务器后,Drone.io 的部分配置丢失
【发布时间】:2017-01-17 20:16:42
【问题描述】:

我有一个 Drone.io 0.5 服务器在个人服务器上运行良好。

但是,在重新启动 Drone 运行的物理服务器后,其配置、构建和机密都丢失了。确切地说,部分信息丢失了。看起来关机杀死了 Drone 服务器,只有两天前的状态保存在磁盘上。无论如何,看起来剩余的配置已损坏,所以我不得不重新配置所有内容(repos、secrets 等)

有什么方法可以让 Drone 更频繁地刷新磁盘上的数据?我担心意外重启,又遇到同样的问题。

编辑:我测试过,$ docker-compose stop 足以停止服务器并保存所有数据。我仍然担心万一服务器崩溃该怎么办。

【问题讨论】:

  • “看起来剩余的配置已损坏” ...您能解释一下为什么您认为它已损坏吗?数据丢失和数据损坏不一定是一回事,这个问题同时声称
  • 让我解释一下:重启服务器后,我再次启动了 Drone。当我访问 UI 时,我找到了我的存储库,但是当我尝试重新启动每个管道时,它们都不起作用。抱歉,如果我没有更多信息。我没有截图。我刚刚删除了sqllite数据库并重新开始。
  • 这告诉我数据没有损坏。损坏的数据库文件将无法打开。重启 Drone 时,如果文件损坏无法打开,Drone 会报错退出,无法启动。
  • 当你说“他们没有工作”是什么意思?
  • @BradRydzewski 打开 UI 后,我打开了一个管道。在重新启动之前,服务器构建了 15 次提交。重新启动后,我只看到了六个。好吧,我打开了最后一个提交,第六个,单击“重新启动”,但什么也没发生。我又试了两次,还是不行。与其他管道相同...如果没有数据库损坏,可能是什么?

标签: drone.io


【解决方案1】:

Drone 将所有数据保存到数据库中。如果您使用默认配置,这是一个 sqlite 数据库。文档建议将卷挂载到主机上,在创建数据库的路径上,以便数据库写入主机并且在容器被销毁时不会被销毁。

Drone 在主机上挂载一个卷来持久化 sqlite 数据库。使用备用数据库引擎时不需要这样做。

services:
  drone-server:
    image: drone/drone:0.5
    ports:
      - 80:8000
    volumes:
      - ./drone:/var/lib/drone/
    restart: always

有什么方法可以让 Drone 更频繁地刷新磁盘上的数据?我担心意外重启,又遇到同样的问题。

SQLite 不在内存中存储数据。数据库事务完成的那一刻,记录被写入磁盘。这是任何符合 ACID 的数据库所必需的。

不管怎样,看起来剩下的配置已经损坏了

如果您认为您的 SQLite 数据库文件已损坏,以下是一些推荐阅读。这将是罕见的,但可能。因此,我们始终建议您定期备份数据库。

【讨论】:

  • 其实我用的是卷“./drone:/var/lib/drone”。因为UI显示两天前的状态,我以为是“刷新”的问题,但是是的,我明白你说的。数据库刚刚损坏。我会听从你关于备份 SQLite 数据库的建议。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
相关资源
最近更新 更多