2017-06-18 53 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

相关问题