如何在docker centos 6映像上启动postgres 9.6服务

我相当新的docker组成,我试图build立一个与centos 6上的postgres 9.6的容器和运行与docker组成。 然后我想能够通过一些数据库pipe理工具连接到数据库。

如果我运行:

docker-compose up 
  • 图像生成正确,但我无法连接到数据库。

  • 如果我删除了tty:truestdin_open:true,则图像会生成,但是会退出,退出代码为0

  • 如果我运行docker-run -it -p 5432:5432 –entypoint / bin / bash [image_name],然后手动运行命令服务postgresql-9.6 start everything works(until I exit the container)。

任何build议?

这是我的docker-compose文件:

 networks{} version: '2' services: postgres: build: context: ./src/test/docker/postgres ports: - "5432:5432" stdin_open: true tty: true 

和我的docker文件:

 FROM centos:6 RUN yum -y install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg- centos96-9.6-3.noarch.rpm RUN yum -y install postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel # Initialize the database (not starting it yet) RUN service postgresql-9.6 initdb RUN su postgres RUN echo "listen_addresses = '*'" >> /var/lib/pgsql/9.6/data/postgresql.conf RUN echo "PORT = 5432" >> /var/lib/pgsql/9.6/data/postgresql.conf RUN echo "local all all trust" > /var/lib/pgsql/9.6/data/pg_hba.conf RUN echo "host all all 127.0.0.1/32 ident" >> /var/lib/pgsql/9.6/data/pg_hba.conf RUN echo "host all all ::1/128 ident" >> /var/lib/pgsql/9.6/data/pg_hba.conf RUN echo "host all all 0.0.0.0/0 md5" >> /var/lib/pgsql/9.6/data/pg_hba.conf RUN exit # Expose the PostgreSQL port EXPOSE 5432 ENTRYPOINT service postgresql-9.6 start 

您的ENTRYPOINT文件中的ENTRYPOINT允许您将容器configuration为可执行文件。 这是一种包装你所需要运行的所有依赖关系的方法,并运行容器=运行你的脚本/应用程序等。

现在你的切入点

 ENTRYPOINT service postgresql-9.6 start 

只运行服务启动和退出! 所以你的容器也将退出。 如果你想configuration它像一个可执行文件,你需要运行postgres命令作为你的ENTRYPOINT命令

  ENTRYPOINT ["sudo","-u","postgres","/usr/pgsql-9.6/bin/postgres","-D","‌​/var/lib/pgsql/9.6/d‌​ata","-p","5432"] 

每当容器启动时,这将运行postgres作为你的ENTRYPOINT命令,你应该能够连接到它。