运行docker-compose时出错:django.db.utils.OperationalError:严重:用户“ postgres”的密码身份验证失败

时间:2020-05-13 14:15:38

标签: django postgresql docker

我正在编写Django Rest API,直到今天我一直在使用venv,直到今天我决定切换到docker环境。而且我无法连接到docker中的数据库。这是docker-compose文件:

version: '3.7'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/usr/src/app/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    depends_on:
      - db

  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=mydatabase

volumes:
  postgres_data:

这是.env.dev文件:

SECRET_KEY=its_a_secret
DEBUG=1
SQL_ENGINE=django.db.backends.postgresql_psycopg2
SQL_DATABASE=mydatabase
SQL_USER=postgres
SQL_PASSWORD=postgres
SQL_HOST=db
SQL_PORT=5432

在我的本地环境中。

我的mydatabase在端口5433上的postgres服务器上运行。

但是当我docker-compose up时出现以下错误enter image description here

这是我的settings.py中数据库的配置:

DATABASES = {
    "default": {
        "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
        "NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
        "USER": os.environ.get("SQL_USER", "user"),
        "PASSWORD": os.environ.get("SQL_PASSWORD", "password"),
        "HOST": os.environ.get("SQL_HOST", "localhost"),
        "PORT": os.environ.get("SQL_PORT", "5432"),
    }
}

0 个答案:

没有答案