如何在docker centos 6映像上启动postgres 9.6服务
我相当新的docker组成,我试图build立一个与centos 6上的postgres 9.6的容器和运行与docker组成。 然后我想能够通过一些数据库pipe理工具连接到数据库。
如果我运行:
docker-compose up
-
图像生成正确,但我无法连接到数据库。
-
如果我删除了tty:true和stdin_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/data","-p","5432"]
每当容器启动时,这将运行postgres作为你的ENTRYPOINT
命令,你应该能够连接到它。