无法在postgres docker容器中验证用户

时间:2017-01-30 13:12:04

标签: django postgresql docker

容纳使用pydanny cookiecutter构建的django应用程序,以部署到EC2实例。 docker_compose.yml非常简单:

version: '2'

volumes:
  postgres_data: {}
  postgres_backup: {}

services:
  postgres:
    build: ./compose/postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - postgres_backup:/backups
    env_file: .env

  ....
在没有异国情调的东西;只是指向备份和恢复脚本和命令以使它们可执行:

FROM postgres:9.4

# add backup scripts
ADD backup.sh /usr/local/bin/backup
ADD restore.sh /usr/local/bin/restore
ADD list-backups.sh /usr/local/bin/list-backups

# make them executable
RUN chmod +x /usr/local/bin/restore
RUN chmod +x /usr/local/bin/list-backups
RUN chmod +x /usr/local/bin/backup

我在db env变量上尝试了几种变体,最新的变量如下:

# PostgreSQL
POSTGRES_PASSWORD='postgrespass'
POSTGRES_USER='postgres'

容器在没有问题的情况下构建和初始化:

docker-compose build postgres
docker-compose up -d

但是当我尝试使用以下命令创建初始数据并将其迁移到数据库时

docker-compose run django /usr/local/bin/python manage.py makemigrations

数据库没有响应 - “Postgres不可用 - 正在休眠”而且docker日志db返回:

DETAIL:  Connection matched pg_hba.conf line 95: "host all all all md5"
FATAL:  password authentication failed for user "'postgres'"

显然我有一些权限问题,但我不太确定如何解决这些问题。我的容器在Ubuntu 16.04 AMI上运行。

1 个答案:

答案 0 :(得分:1)

您可以通过在终端中键入以下命令来转到psql控制台并更改用户postgres的密码

sudo -u postgres psql
postgres=# \password
Enter new password:
Enter it again:
postgres=#

或者如果您忘记了,请重置密码:

ALTER USER "user_name" WITH PASSWORD 'new_password';