Python Docker Compose';尚未为数据库设置密码';

Python Docker Compose';尚未为数据库设置密码';,python,django,postgresql,docker,docker-compose,Python,Django,Postgresql,Docker,Docker Compose,我正在使用Django处理一个项目,并试图在我的docker compose.yml脚本中将.env文件加载到PostgreSQL映像中。但是,由于某些原因,我无法加载它们 运行“docker compose up”命令后,我从db_1得到的警告如下: 。 . . db|U 1|**************************************************** db_1 |警告:尚未为数据库设置密码。 db_1 |这将允许任何人访问 db|U 1 | Postgres端口访

我正在使用Django处理一个项目,并试图在我的docker compose.yml脚本中将.env文件加载到PostgreSQL映像中。但是,由于某些原因,我无法加载它们

运行“docker compose up”命令后,我从
db_1
得到的警告如下:

。
.
.
db|U 1|****************************************************
db_1 |警告:尚未为数据库设置密码。
db_1 |这将允许任何人访问
db|U 1 | Postgres端口访问您的数据库。在里面
db_1| Docker的默认配置,这是
db_1 |实际上是同一容器上的任何其他容器
db|U 1 |系统。
db|U 1|
db_1 |使用“-e POSTGRES_PASSWORD=PASSWORD”设置
db|U 1 |它在“docker run”中运行。
db|U 1|****************************************************
.
.
.
为了帮助重现问题,以下是我的文件夹结构:

├── config/
│   ├── .env
├── src/
│   ├── manage.py
│   └── core
│   |   ├── __init__.py
│   |   ├── settings.py
│   |   ├── urls.py
│   |   ├── wsgi.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
我的项目结构:

├── config/
│   ├── .env
├── src/
│   ├── manage.py
│   └── core
│   |   ├── __init__.py
│   |   ├── settings.py
│   |   ├── urls.py
│   |   ├── wsgi.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
我的Dockerfile

FROM python:3.7.0
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
version: '2'

services:
  db:
    image: postgres
    restart: always
    env_file:
      - ./config/.env
  web:
    build: .
    stdin_open: true
    tty: true
    command: python src/manage.py runserver 0.0.0.0:8000
    restart: always
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
Mydocker compose.yml

FROM python:3.7.0
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
version: '2'

services:
  db:
    image: postgres
    restart: always
    env_file:
      - ./config/.env
  web:
    build: .
    stdin_open: true
    tty: true
    command: python src/manage.py runserver 0.0.0.0:8000
    restart: always
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
我的.env文件:

PGUSER=admin
PGDATABASE=db
PGPASSWORD=s3cr3t
PGHOST=h0st
PGPORT=5432
有趣的一点是,我能够使用库将环境变量加载到settings.py中,问题实际上是在PostgreSQL映像中设置环境变量

我遵循PostgreSQL本身指定的环境变量逻辑:
我对文档感到困惑。在下面的链接中,可以更清楚地了解如何在Docker中为PostgreSQL使用环境变量:


我对文档感到困惑。在下面的链接中,可以更清楚地了解如何在Docker中为PostgreSQL使用环境变量:


错误提示在
.env
文件
PGPASSWORD
中设置
POSTGRES\u密码。将其更改为
POSTGRES\u PASSWORD
为其指定一个tryprety确保您同时需要-
POSTGRES\u PASSWORD
docker entrypoint.sh
显式使用,以初始化默认数据库超级用户
PGPASSWORD
是客户端在建立连接时使用的。我被文档弄糊涂了,您使用的解决方案工作得非常好。非常感谢。错误是在您的
.env
文件
PGPASSWORD
中设置
POSTGRES\u密码。将其更改为
POSTGRES\u PASSWORD
为其指定一个tryprety确保您同时需要-
POSTGRES\u PASSWORD
docker entrypoint.sh
显式使用,以初始化默认数据库超级用户
PGPASSWORD
是客户端在建立连接时使用的。我被文档弄糊涂了,您使用的解决方案工作得非常好。非常感谢你。