我如何从Docker启动Postgresql

时间:2018-09-08 09:38:57

标签: postgresql dockerfile

我想在docker构建期间启动一个postgresql服务。

在我的docker文件中:

RUN /etc/init.d/postgresql start && createdb gis && psql -d gis -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'

构建过程中的输出:

Step 29/29 : RUN /etc/init.d/postgresql start && createdb gis && psql -d gis -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'
 ---> Running in 7d7848bf2d1a
 * Starting PostgreSQL 9.5 database server
   ...done.
CREATE EXTENSION

检查docker容器中的状态:

postgres@16ab935bc857:/$ /etc/init.d/postgresql status
9.5/main (port 5432): down

但是直接在docker容器中运行命令确实表明它已经运行过并创建了容器

postgres@16ab935bc857:/$ /etc/init.d/postgresql start && createdb gis && psql -d gis -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'
 * Starting PostgreSQL 9.5 database server                                                                                                                                        [ OK ] 
createdb: database creation failed: ERROR:  database "gis" already exists

任何人都知道如何正确地在Dockerfile中启动postgresql服务吗?

更新: 我的最佳猜测是: 泊坞窗文件中的每一行仅代表一个新的bash会话,但是用系统关闭和引导进行类比会更正确。这意味着同一行(用“ &&”链接)上的所有命令都已通过,而我只需要在下一行的开始处执行另一个“ postgresql start &&”,或链接其他命令。

0 个答案:

没有答案