微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Docker文件中向pgadmin添加postgress连接

如何解决在Docker文件中向pgadmin添加postgress连接

是否可以通过某些服务器连接预先配置pgadmin(也许通过env变量)?

假设您有这个docker-compose.yml,在此示例中类似PGADMIN_CONNECTIONS env变量? (PGADMIN_CONNECTIONS可能不是有效的ENV变量,只是一个说明)

version: '3'
services:
  postgres:
    image: postgres
    hostname: postgres
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: dbuser
      POSTGRES_PASSWORD: dbpass
      POSTGRES_DB: TEST_SM

  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "80:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: admin

      ??PGADMIN_CONNECTIONS: dbuser:dbpass@postgres:5432

解决方法

您需要定义一个servers.json文件来配置连接。 here有据可查。

容器内的默认路径为/pgadmin4/servers.json。您可以将自己的server.json文件版本COPY放入新生成的映像中,也可以在运行时将其绑定安装到容器中。

不能通过JSON将密码传递给pgadmin,但是在下面的示例中引用了包含密码的文件。有关更多信息,请参见下文。

server.json文件的示例结构如下:

{
  "Servers": {
    "1": {
      "Name": "pgadmin4@pgadmin.org","Group": "Servers","Host": "magic_db","Port": 5432,"MaintenanceDB": "postgres","Username": "postgres","PassFile": "/pgpass","SSLMode": "prefer"
    }
  }
}

/pgpass需要以下结构:

hostname:port:database:username:password

因此,对于上面的示例是:

magic_db:5432:postgres:postgres:secretpassword

注意:在新版本的pgadmin中,密码已更改为PassFile,如here所示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。