[英]Use environment variables in docker-compose for initdb of postgres
我想使用放在/docker-entrypoint-initdb.d/
中的*.sql
腳本構建我的基本數據庫
我的 SQL 文件如下所示:
create schema crm;
alter schema crm owner to ${CRM_SCHEMA_OWNER};
....
當然,使用 psql 導入並不能解析變量。 我現在的問題是,我怎樣才能使用這樣的環境變量?
我嘗試在入口點目錄中也有一個 .sh 文件,用環境數據替換.sql
文件中的字符串,但我總是得到:
db_1 | sed:無法打開臨時文件/docker-entrypoint-initdb.d/sedjKqYgZ:權限被拒絕
我什至試過
COPY sql/*.sql /mydata/
RUN ln -sf /mydata/*.sql /docker-entrypoint-initdb.d/
在 Dockerfile 和/docker-entrypoint-initdb.d/
我的.sh
腳本中
sed -i "s/__CRM_SCHEMA_OWNER__/$CRM_SCHEMA_OWNER/g" /mydata/01_create_crm.sql
但這也沒有用。
關於如何使用環境變量設置數據庫的任何建議?
謝謝弗里茨
目前 postgres docker 圖像將運行 /docker-entrypoint-initdb.d/ 中的 shell 腳本以及 SQL 腳本。 你可以這樣寫:
#!/bin/bash
psql -U ${POSTGRES_USER} <<-END
create schema crm;
alter schema crm owner to ${CRM_SCHEMA_OWNER};
END
例如,在一個名為create_crm_schema.sh
的文件中。
如果您想在從該鏡像派生的鏡像中進行額外的初始化,請在 /docker-entrypoint-initdb.d 下添加一個或多個 *.sql、*.sql.gz 或 *.sh 腳本(必要時創建目錄)。 在入口點調用 initdb 以創建默認的 postgres 用戶和數據庫后,它將運行任何 *.sql 文件,運行任何可執行的 *.sh 腳本,並獲取在該目錄中找到的任何不可執行的 *.sh 腳本以在之前進行進一步初始化啟動服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.