2017-06-18 54 views
0

我對Docker有點新鮮。
我有兩個使用docker-compose運行的容器。
一個是API,另一個是實際應用程序。
我想使用Postgres官方圖像添加一個新的數據庫容器。
找到關於如何創建容器並使用預定義的sql文件(模式和數據)填充它的簡單教程有點難。
在碼頭集裝箱內創建一個正在運行的Postgres服務

當我在Dockerfile中的「CMD /etc/init.d/postgresql start」開始時,出現錯誤:「沒有PostgreSQL羣集存在;請參閱」man pg_createcluster「...(警告)。

因爲需要太多時間才能完成任務,所以想知道是否可以更好地獲取Ubuntu映像並自行安裝Postgres,因爲只有一個源代碼如何使用映像碼頭集線器,而且我似乎沒有很好地理解它。

有關如何撰寫和「配置」此圖片的任何想法或簡單步驟?

回答

0

如果你想與一些文件,一個簡單的方法來做到這填入你的數據庫是:

如何延長這一形象

如果你想這樣做的圖像中附加的初始化衍生 從這個文件中,在 /docker-entrypoint-initdb.d下添加一個或多個* .sql,* .sql.gz或* .sh腳本(如果需要,創建該目錄)。 入口點調用initdb創建默認的postgres用戶 和數據庫後,它將運行任何* .sql文件,並在啓動 服務之前,將該目錄中找到的任何* .sh腳本 進行進一步初始化。

Dockerfile

FROM postgres:alpine 
COPY init.sql /docker-entrypoint-initdb.d/init.sql 

泊塢窗,compose.yml

version: '3' 
services: 
    app: 
    //your app definition 
    postgres: 
    build: . 
+0

TNX,以及如何運行,容器內的Postgres的服務器? – Loves2Develop

+0

來自官方圖像的命令通過defualt運行該過程,您不需要覆蓋它。 – German

+0

確實... 我的錯在於我覆蓋了我的yml文件中的初始腳本,導致原始postgres圖像腳本被忽略,並且psql服務器未啓動。 感謝您花時間回答我的問題@德國 – Loves2Develop

相關問題