Docker:侦听.sql更改并重新配置数据库

Docker:侦听.sql更改并重新配置数据库,docker,provisioning,Docker,Provisioning,我正在寻找一种设计模式来“侦听”目录中的文件更改(它们都是带有Makefile的.sql文件),如果有任何更改,则执行命令 在我的存储库中,我有三种类型的数据: node.js文件 PostgreSQL配置 用于设置PostgreSQL的SQL文件 如果node.js文件(1)发生更改,则必须重新启动node.js容器。如果PostgreSQL配置(2)发生更改,则必须重新启动PostgreSQL数据库。这两个都很简单。但是如果SQL文件发生更改(3),那么我需要运行make命令,使用psql处

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

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

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


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

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

    使用inotify或在Python pyinotify@user2915097中,我知道有许多监视文件更改的解决方案。事实上,docker包含了自己的解决方案,所以这就是为什么我要问是否有一种“docker方法”可以做到这一点。