【问题标题】:browse postgres in a docker container在 docker 容器中浏览 postgres
【发布时间】:2018-07-20 17:24:46
【问题描述】:

我正在使用 docker-compose 跨多个 docker 容器工作,所有这些容器大多是单独的 django rest 框架构建的应用程序。我已经下载了所有容器,并且能够使用所有这些容器构建整个应用程序。

每个容器都有 postgres db 运行,我现在想使用任何 ui 工具浏览 db。我知道 pgadmin 可以在这里完成工作,但我如何配置我的 pgadmin 以展示来自这些容器的任何 postgres 数据库?

【问题讨论】:

    标签: sql postgresql docker django-rest-framework pgadmin-4


    【解决方案1】:

    确保postgres 容器的端口映射到主机系统。默认的postgres 端口是5432。您可以使用docker-compose.yml 中的port directive 来做到这一点。您只能映射一次端口。所以你的配置文件看起来像:

    services:
      postgres_1:
        ports:
          - "49000:54321"
        [...]
      postgres_2:
        ports:
          - "49001:54321"
        [...]
    

    之后,您应该能够使用您的docker 主机的 IP 和上面指定的端口访问所需的数据库。


    如果您在与pgadmin 等客户端连接时仍然遇到问题,请检查容器内的以下配置文件。

    1. 是否有任何东西阻止了您的连接尝试?您的docker 主机是否位于防火墙后面?
    2. postgresql.confconnections and authentication部分下:

      • listen_addresses
      • port
    3. 检查您的pg_hba.conf, which controls client authentication

      • 出于调试目的,您可以将其设置为以下内容:

        不要在生产中做以下事情

        host    all             all             all                 trust
        

    【讨论】:

      【解决方案2】:

      应该可以将您的数据库端口也暴露给您的本地网络。

      通常,您在内部将应用程序容器连接到数据库容器。在这种情况下,不需要在您的数据库的撰写文件中声明端口部分,但如果您有该条目,则除了本地主机之外,您还可以绑定您的数据库。

      在您也将 postgres 端口暴露给您的主机端口之后,使用您选择的 gui 工具连接应该没有问题。

      version: '3.2'
      services:
          httpd:
              image: "oth/d_apache2.4:0.2"
              ports:
                      # container port 80 of the webserver to localhost 80   
                      - "80:80"
          keycloak:
              # keycloak uses keycloak_db
              image: "jboss/keycloak-postgres:3.2.1.Final"
              environment:
                    # internal network reference to db container
                    - POSTGRES_PORT_5432_TCP_ADDR=keycloak_db
                    - POSTGRES_PORT_5432_TCP_PORT=5432
          keycloak_db:
              environment:
              image: "postgres:alpine"
              ports:
                      # container port 5432 to localhost 5432 
                      # stack intern is the port still available 
                      - "5432:5432"
      

      【讨论】:

        猜你喜欢
        • 2015-08-19
        • 2022-07-20
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-20
        • 2017-01-09
        • 2020-02-20
        相关资源
        最近更新 更多