docker - 在 docker-compose down 之前备份 Mysql DB
问题描述
我有 MySQL 备份容器,它每 1 小时进行一次数据库备份,但我只需要在docker-compose down
. 有可能吗?据我了解,这应该是某种钩子“Before Down”“After Start”。
我想使用这样的东西,但这应该在容器关闭之前自动完成:
docker exec MYSQL_CONTAINER_ID /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql
更新
到目前为止,我所做的是在我拥有的这个脚本中创建了 down.sh 脚本:
#!/bin/bash
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
docker exec test1-mysql sh -c 'exec mysqldump --databases local -uroot -p"$MYSQL_ROOT_PASSWORD"' > "$CURRENT_DIR/docker/data/backup/local.sql"
docker-compose down
接缝对我来说是合法的,jsut需要弄清楚如何将mysql容器名称作为变量传递给这个脚本。这里的容器名称是 test1-mysql。我想从 docker-compose.yml 中获取这个值。有任何想法吗?
解决方案
TL;DR: docker stop 向容器的 ENTRYPOINT pid 发送一个 SIGTERM。您可以修改 ENTRYPOINT 脚本以捕获 SIGTERM 并执行备份或其他清理工作。
推荐阅读
- c - 强制用户使用 C 中的 While 循环输入整数
- ruby-on-rails - 模型中的 ActiveRecord 自动保存
- ruby-on-rails - rspec 升级到 3.1.0 后,与 allow_any_instance_of 一起使用的 and_call_original 不起作用
- debian - VM - 将可用空间附加到根分区
- spring - 如何将 @Value 传递给 @Component 以进行 Spring 单元测试
- r - 您可以使用 R 来创建音乐(逐个音符),例如通过 MIDI 或其他格式吗?
- c# - Xaml Page 从系统中选择个人资料图片
- docker - Dockerfile 中的条件 ARG
- angular - 如何通过角度4获取json数据
- c# - 实体框架。将值从一个实体类插入到另一个不同的实体类