簡體   English   中英

Docker docker-entrypoint-initdb.d 按定義的順序執行

[英]Docker docker-entrypoint-initdb.d execute by defined order

我喜歡能夠執行sql腳本文件然后
腳本目錄,然后是另一個腳本目錄。
如果執行在 docker-entrypoint-initdb.d 下映射的內容,我如何控制順序

例如:我有

run_me_first.sql
direcoty_first
   a.sql
   aa.sql
directory_second
   bb.sql

我喜歡能夠執行:
第一:run_me_first.sql
第二: direcoty_first -> 內部腳本順序無關緊要
第三:directory_second -> 內部腳本順序無關緊要

使用 docker-compose 映射到 docker-entrypoint-initdb.d 如何控制腳本的執行順序

它們應該按字典(排序,字母)順序執行; 如果您將它們命名為01-bb.sql02-a.sql03-aa.sql ,這將是順序。

當容器第一次啟動時, postgres鏡像入口點指定了在啟動時運行的腳本,就像

docker_process_init_files /docker-entrypoint-initdb.d/*

(其中docker_process_init_files腳本前面定義的 shell 函數)。 當 shell 擴展此模式時, POSIX.1 shell 規范表明

如果模式匹配任何現有的文件名或路徑名,則模式應替換為這些文件名和路徑名,根據當前語言環境中有效的整理順序進行排序。 如果此整理順序沒有對所有字符進行總排序(請參閱 XBD LC_COLLATE),則應使用 POSIX 語言環境的整理順序進一步逐字節比較任何同等整理的文件名或路徑名。

另一方面是腳本必須直接在/docker-entrypoint-initdb.d目錄中,子目錄中的安裝腳本不會被這個特定的文件名擴展注意到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM