我想在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 &&”,或链接其他命令。