Postgresql Docker compose up无法验证postgres用户
运行Postgresql Docker compose up无法验证postgres用户,postgresql,docker,Postgresql,Docker,运行docker compose-f production.yml up最终将返回: postgres_1 | Connection matched pg_hba.conf line 95: "host all all all md5" django_1 | PostgreSQL is unavailable (sleeping)... postgres_1 | 2018-03-21 07:48:35.575 UTC [120] FATAL: passwo
docker compose-f production.yml up
最终将返回:
postgres_1 | Connection matched pg_hba.conf line 95: "host all all all md5"
django_1 | PostgreSQL is unavailable (sleeping)...
postgres_1 | 2018-03-21 07:48:35.575 UTC [120] FATAL: password authentication failed for user "DbUsErName"
postgres_1 | 2018-03-21 07:48:35.575 UTC [120] DETAIL: Password does not match for user "DbUsErName".
在我的.envs/.production/.postgres中,我的envs的布局如下:
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_DB=luup
POSTGRES_USER=DbUsErName
POSTGRES_PASSWORD=myVeryYLongPW
在出现上述错误之前,终端还将输出:
celeryworker_1 | /entrypoint.sh: line 13: POSTGRES_USER: parameter not set
但是,它似乎是在compose/production/django/entrypoint.sh的文件中设置的:
set -o errexit
set -o pipefail
set -o nounset
cmd="$@"
if [ -z "${POSTGRES_USER}" ]; then
# the official postgres image uses 'postgres' as default user if not set explictly.
export POSTGRES_USER=postgres
fi
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}"
自从我开始这个项目以来,我没有接触过太多postgres配置,因为这是一个只在Heroku上运行的尝试。因此,我没有进入psql
我需要做什么才能启动并运行它
如果需要更多信息,请告诉我
编辑--production.yml:
version: '2'
volumes:
postgres_data: {}
postgres_backup: {}
caddy: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
depends_on:
- postgres
- redis
env_file:
- ./.envs/.production/.django
- ./.envs/.production/.postgres
- ./.envs/.production/.celery
command: /gunicorn.sh
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
volumes:
- postgres_data:/var/lib/postgresql/data
- postgres_backup:/backups
env_file:
- ./.envs/.production/.postgres
caddy:
build:
context: .
dockerfile: ./compose/production/caddy/Dockerfile
depends_on:
- django
volumes:
- caddy:/root/.caddy
env_file:
- ./.envs/.production/.caddy
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
redis:
image: redis:3.0
celeryworker:
<<: *django
depends_on:
- postgres
- redis
env_file:
- ./.envs/.production/.celery
command: /start-celeryworker.sh
celerybeat:
<<: *django
depends_on:
- postgres
- redis
env_file:
- ./.envs/.production/.celery
command: /start-celerybeat.sh
版本:“2”
卷数:
postgres_数据:{}
postgres_备份:{}
球童:{}
服务:
django:&django
建造:
上下文:。
dockerfile:./compose/production/django/dockerfile
取决于:
-博士后
-雷迪斯
环境文件:
-../.envs/.production/.django
-./.envs/.production/.postgres
-./.envs/.production/.芹菜
命令:/gunicorn.sh
博士后:
建造:
上下文:。
dockerfile://撰写/制作/博士后/dockerfile
卷数:
-postgres_数据:/var/lib/postgresql/data
-postgres\u备份:/backups
环境文件:
-./.envs/.production/.postgres
球童:
建造:
上下文:。
dockerfile://撰写/制作/助手/dockerfile
取决于:
-德扬戈
卷数:
-助手:/root/.caddy
环境文件:
-./.envs/.production/.caddy
端口:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
redis:
图片:redis:3.0
芹菜工人:
Postgres容器在第一次运行时从环境变量创建用户。因此,为了使它具有新的值(生产用户名和密码),您可能必须重新构建它
docker编写停止postgres
docker编写rm postgres
docker compose-f production.yml up
Postgres容器在第一次运行时从环境变量创建用户。因此,为了使它具有新的值(生产用户名和密码),您可能必须重新构建它
docker编写停止postgres
docker编写rm postgres
docker compose-f production.yml up
你能显示你的production.yml文件吗?@Quba现在添加了你以前是否使用不同的凭据(例如dev env)运行过你的postgres。如果是这样,postgres可能只在第一次启动时创建用户,然后不检查env变量是否已更改。如果是这样的话,你能试着重建博士后吗?@Quba事实上,我不确定我有。当我尝试运行docker compose-f local.yml run postgres psql
时,返回的结果是:psql:无法连接到服务器:没有这样的文件或目录是在本地运行并接受Unix域套接字连接的服务器“/var/run/postgresql/.s.PGSQL.5432”
。我的理解是,这意味着它还没有建成?我将如何在Docker中构建它?尝试:Docker compose stop postgres
Docker compose rm postgres
Docker compose-f production.yml up
你能显示你的production.yml文件吗?@Quba现在添加了你以前是否使用不同的凭据运行过你的postgres(例如dev env)。如果是这样,postgres可能只在第一次启动时创建用户,然后不检查env变量是否已更改。如果是这样的话,你能试着重建博士后吗?@Quba事实上,我不确定我有。当我尝试运行docker compose-f local.yml run postgres psql
时,返回的结果是:psql:无法连接到服务器:没有这样的文件或目录是在本地运行并接受Unix域套接字连接的服务器“/var/run/postgresql/.s.PGSQL.5432”
。我的理解是,这意味着它还没有建成?我该如何在Docker中构建它呢?试试:Docker compose stop postgres
Docker compose rm postgres
Docker compose-f production.yml up
有没有办法避免我每次“起床”都要这样做?有没有办法避免我每次“起床”都要这样做?