【问题标题】:Docker-compose Adding Postgres PasswordDocker-compose 添加 Postgres 密码
【发布时间】:2015-06-10 10:20:03
【问题描述】:

我在从远程计算机访问我的 postgres 数据库时遇到问题。我正在从 digitalOcean 液滴运行 docker-compose(django 和 postgres),所以我需要能够从我的 mac 访问数据库。

根据 docker-compose 中的环境使用大纲,我认为以下内容会起作用。任何帮助将不胜感激。

db:
  image: postgres
  ports:
    - "5555:5555"
  environment:
    - POSTGRES_PASSWORD=mysecretpassword
    - POSTGRES_USER=postgres
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db

我正在尝试从端口 5555 上的 pgadmin3 访问 postgres 数据库,用户:postgres,密码:mysecretpassword。

【问题讨论】:

  • pgadmin3 正在运行
  • 您是否让 postgres 在容器 db 中侦听端口 5555(postgresql.conf 是否将端口设置为 5555 并侦听设置为 *)?如果你这样做了,你可以'docker exec -it db bash'然后进入'psql -p 5555 -h 127.0.0.1 -U postgres'吗?
  • 你发现了吗?
  • 你下载的 postgres 图片是什么?
  • 这里有同样的问题。看起来环境变量POSTGRES_PASSWORD 被忽略了。

标签: django postgresql docker docker-compose


【解决方案1】:

Postgres 默认使用端口5432。可以将容器内的5432端口映射到5555的host post上,用冒号冒号(如下图)。

db:
  image: postgres
  ports:
    - "5555:5432"
  environment:
    - POSTGRES_PASSWORD=mysecretpassword
    - POSTGRES_USER=postgres

您的数据库现在可以通过端口 5555 访问。

我没有使用过 pgAdmin,但是使用 psql 可以访问数据库...

psql -U postgres -h <your ip> -p 5555

【讨论】: