容纳使用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上运行。
答案 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';