Docker docker-entrypoint-initdb.d 按定义的顺序执行

use*_*898 17 sql docker

我喜欢能够执行 sql 脚本文件,然后
执行脚本目录,然后执行另一个脚本目录。
如果执行 docker-entrypoint-initdb.d 下映射的内容,我如何控制顺序

例如:我有

run_me_first.sql
direcoty_first
   a.sql
   aa.sql
directory_second
   bb.sql
Run Code Online (Sandbox Code Playgroud)

我希望能够执行:
第一:run_me_first.sql
第二:direcoty_first -> 内部脚本顺序无关紧要
第三:directory_second -> 内部脚本顺序无关紧要

使用 docker-compose 映射到 docker-entrypoint-initdb.d 我如何控制脚本执行顺序

Dav*_*aze 20

它们应该按字典顺序(排序、字母顺序)执行;如果您命名它们01-bb.sql02-a.sql03-aa.sql这将是顺序。

当容器首次启动时,postgres图像入口点指定在启动时运行的脚本,如下所示

docker_process_init_files /docker-entrypoint-initdb.d/*
Run Code Online (Sandbox Code Playgroud)

(其中是脚本前面docker_process_init_files定义的 shell 函数)。当 shell 扩展此模式时,POSIX.1 shell 规范指示

如果该模式与任何现有文件名或路径名匹配,则该模式应替换为这些文件名和路径名,并根据当前语言环境中有效的整理顺序进行排序。如果此整理序列没有所有字符的总排序(请参阅 XBD LC_COLLATE),则应使用 POSIX 语言环境的整理序列进一步逐字节比较同等整理的任何文件名或路径名。

另一方面是脚本必须直接位于/docker-entrypoint-initdb.d目录中,子目录中的安装脚本不会被这个特定的文件名扩展注意到。