【问题标题】:Database Postgres in Docker with Django? [duplicate]Docker 中的数据库 Postgres 与 Django? [复制]
【发布时间】:2021-03-08 16:20:31
【问题描述】:

例如我在 Django 中使用默认设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }

当使用 dockerize 我的数据库时

depends_on:
          - db

我应该将'HOST' 参数 '127.0.0.1' 更改为'db'

你能解释一下这个过程吗

提前谢谢你

【问题讨论】:

    标签: django database postgresql docker


    【解决方案1】:

    是的,您需要将主机更改为 db。您还可以在设置中使用环境变量,如下所示。

    DATABASES = {
    "default": {
        "ENGINE": os.environ.get("SQL_ENGINE"),
        "NAME": os.environ.get("SQL_DATABASE"),
        "USER": os.environ.get("SQL_USER"),
        "PASSWORD": os.environ.get("SQL_PASSWORD"),
        "HOST": os.environ.get("SQL_HOST"),
        "PORT": os.environ.get("SQL_PORT"),
    }
    

    }

    并将环境变量添加到 docker-compose 或添加 env_file。下面是 docker-compose。

    services:
      web:
        restart: always
        build:
          context: ./mmd_backend
          dockerfile: Dockerfile.prod
        command: gunicorn mmd_backend.wsgi:application --bind 0.0.0.0:8000
        volumes:
          - static_volume:/home/app/web/staticfiles
          - media_volume:/home/app/web/mediafiles
        expose:
          - 8000
        env_file:
          - ./.env.prod
        depends_on:
          - db
      db:
        build: ./pg12-3.0
        ports:
          - 5436:5432
        volumes:
          - postgres_data:/var/lib/postgresql/data/
        env_file:
          - ./.env.prod.db
      nginx:
        build: ./nginx
        restart: always
        volumes:
          - static_volume:/home/app/web/staticfiles
          - media_volume:/home/app/web/mediafiles
        ports:
          - 8000:8000
        depends_on:
          - web
    
    volumes:
      postgres_data:
      static_volume:
      media_volume:
    

    和env文件如下

    #.env
    
    DEBUG=1
    SECRET_KEY=7bhlblY8pY
    SQL_ENGINE=django.contrib.gis.db.backends.postgis
    SQL_DATABASE=db_name
    SQL_USER=db_user
    SQL_PASSWORD=db_password
    SQL_HOST=db
    SQL_PORT=5432
    

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2022-11-20
      • 1970-01-01
      • 2020-03-10
      • 2017-08-06
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多