【发布时间】:2017-06-15 15:55:03
【问题描述】:
将使用 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
....
dockefile 中没有奇异的东西;只是指向备份和恢复脚本和命令的指针以使其可执行:
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 环境变量上尝试了几种变体,其中最新的看起来像:
# 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 logs 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 上运行。
【问题讨论】:
标签: django postgresql docker