You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用DDEV的exec-host钩子绑定命令,实现执行ddev poweroff时自动备份数据库

实现DDEV poweroff时自动备份数据库的几种方案

嘿,这个需求太懂了——能少敲一次命令就少敲一次,完全没必要抱歉!下面给你几个靠谱的实现思路,选最适合你的就行:

1. 用DDEV内置的全局Hooks(最推荐,自动触发)

DDEV本身支持在特定操作前后执行自定义命令,poweroff也有对应的触发事件。你只需要修改全局配置文件,就能让所有项目在执行ddev poweroff前自动备份数据库:

  1. 打开(或创建)全局DDEV配置文件:~/.ddev/global_config.yaml
  2. 添加以下内容(替换成你的备份目录和命令):
hooks:
  pre-poweroff:
    - exec-host: |
        # 先确保备份目录存在
        mkdir -p /path/to/your/backup/folder
        # 执行你的备份命令,比如用官方的backup-db或者你自己的自定义命令
        ddev backup-db --all --target-dir=/path/to/your/backup/folder
  • pre-poweroff:这个事件会在ddev poweroff执行前触发,完美符合你的需求
  • exec-host:表示在你的本地主机(不是容器内)执行命令
  • --all:如果要备份所有DDEV项目的数据库,加上这个参数;如果只需要当前项目,去掉就行
  • 如果用你自己的自定义备份命令,把ddev backup-db...换成你的命令(比如ddev my-custom-backup)就行

保存配置后,下次再敲ddev poweroff,就会自动先跑备份流程啦!

2. 自定义Shell别名(简单灵活,需换命令调用)

如果不想改DDEV配置,也可以给ddev poweroff做个“包装”,用Shell别名实现:

打开你的Shell配置文件(比如~/.bashrc、~/.zshrc或者~/.fish/config.fish),添加一行:

alias ddev-po='ddev backup-db --all --target-dir=/path/to/your/backup/folder && ddev poweroff'

之后你只需要敲ddev-po(或者你取的其他别名),就会先备份再执行poweroff。

这个方法的好处是不需要修改DDEV的配置,缺点是需要记住用这个别名,而不是原来的ddev poweroff。

3. 单个项目的Hooks(只针对特定项目生效)

如果你只需要给某个项目做这个自动备份,不用全局配置,直接修改该项目的.ddev/config.yaml,添加同样的hooks内容就行:

hooks:
  pre-poweroff:
    - exec-host: mkdir -p /path/to/your/backup/folder && ddev backup-db --target-dir=/path/to/your/backup/folder

这样只有这个项目在执行ddev poweroff(或者全局poweroff时)会触发备份,其他项目不受影响。

小提示

  • 记得把/path/to/your/backup/folder换成你实际的备份目录,比如~/ddev-db-backups
  • 如果你的自定义备份命令需要参数,直接在exec-host后面加就行,用多行的话记得用|换行

内容的提问来源于stack exchange,提问作者pmichelazzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:37:36