【问题标题】:Docker: listen for .sql changes and re-provision databaseDocker:监听 .sql 更改并重新配置数据库
【发布时间】:2015-01-07 11:33:36
【问题描述】:

我正在寻找一种设计模式来“监听”目录中的文件更改(它们都是带有 Makefile 的 .sql 文件)并在有任何更改时执行命令。

在我的存储库中,我有三种类型的数据:

  1. node.js 文件
  2. PostgreSQL 配置
  3. 用于配置 PostgreSQL 的 SQL 文件

如果 node.js 文件 (1) 发生更改,则 node.js 容器必须重新启动。如果 PostgreSQL 配置 (2) 更改,则 PostgreSQL 数据库必须重新启动。这两个都很容易。但是如果 SQL 文件发生更改 (3),那么我需要运行 make 命令来使用 psql 处理 .sql 文件,而无需重新启动 node.js 或 PostgreSQL。

挑战在于这个make 命令通常会在完成后退出。因此,如果它是以 dockerfile 的形式创建的,一旦它退出,它就会被 docker 不必要地不断重启。除了在我的Makefile 中添加一个 hacky sleep 99999999 类型的命令之外,对于这种使用 docker 的“运行一次然后退出”要求,是否有任何普遍接受的做法?

【问题讨论】:

  • 使用 inotify en.wikipedia.org/wiki/Inotify 或 Python 中的 pyinotify pyinotify.sourceforge.net
  • @user2915097 我知道许多用于监视文件更改的解决方案。事实上 docker 包含了它自己的这样一个解决方案,所以这就是为什么我要问是否有一个“docker 方式”来做到这一点。

标签: docker provisioning


【解决方案1】:

您正在描述一种常见的“持续集成”模式。文件被提交到 Subversion 或 Git 等源代码修订系统中。然后,像Jenkins 这样的构建服务器会自动检测对这些文件的更改,该服务器执行“docker build”和“docker push”(假设您使用本地注册表在组织内分发构建的图像)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多