【问题标题】:Dockerized Django REST Application and PostgreSQL DBDockerized Django REST 应用程序和 PostgreSQL 数据库
【发布时间】:2018-05-01 23:16:54
【问题描述】:

有没有什么方法可以让我在每次决定运行我的应用程序时都不需要更改我的 settings.py 文件?我的意思是:

-每次我想用 docker-compose 运行 dockerized 应用程序时,我的 settings.py 文件看起来像这样:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'agent_technologies_db',
        'USER': 'stefan_radonjic',
        'PASSWORD': 'cepajecar995',
        'HOST': 'db', 
        'PORT': '',
        }
}

-每次我想在本地机器上运行我的应用程序时,我的 settings.py 看起来像这样:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'agent_technologies_db',
        'USER': 'stefan_radonjic',
        'PASSWORD': 'cepajecar995',
        'HOST': 'localhost', 
        'PORT': '',
        }
}

有没有办法解决这个问题?

这是我的 docker-compose.yml 文件的样子:

version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_USER=stefan_radonjic
      - POSTGRES_PASSWORD=cepajecar995
      - POSTGRES_DB=agent_technologies_db
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes: 
      - .:/agent-technologies
    ports: 
      - "8000:8000"
    links:
      - db
    depends_on:
      - db

【问题讨论】:

标签: django postgresql docker


【解决方案1】:

最简单的方法:使用两个单独的设置文件。

在本地机器上运行时,使用settings.py

在 Docker 中运行时,使用settings-docker.py(或任何名称),并将此文件绑定挂载到容器中为settings.py。这样,您在容器内的应用程序将按预期只看到 settings.py 文件。

只需像这样修改您的 docker-compose.yml 文件(确保使用正确的路径):

volumes: 
  - .:/agent-technologies
  - settings-docker.py:/app/settings.py

【讨论】:

    【解决方案2】:

    我已按照以下链接中提供的解决方案解决了该问题:

    How to properly runserver on different settings for Django?

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2020-11-18
      相关资源
      最近更新 更多