Dockerized Django REST应用程序和PostgreSQL DB

时间:2018-05-01 23:16:54

标签: django postgresql docker

每次我决定运行我的应用程序时,有什么方法我不需要更改我的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

2 个答案:

答案 0 :(得分:0)

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

在本地计算机上运行时,请使用settings.py

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

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

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

答案 1 :(得分:0)

我已按照以下链接提供的解决方案修复了此问题:

How to properly runserver on different settings for Django?