簡體   English   中英

Dockerized Django REST應用程序和PostgreSQL DB

[英]Dockerized Django REST Application and PostgreSQL DB

有什么方法不需要每次決定運行應用程序時都更改我的settings.py文件嗎? 我的意思是:

-每次我想使用docker運行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

最簡單的方法:使用兩個單獨的設置文件。

在本地計算機上運行時,請使用settings.py

在Docker中運行時,請使用settings-docker.py (或任何名稱),並將此文件作為settings.py綁定到容器中。 這樣,您的容器內的應用程序將只看到預期的settings.py文件。

只需像這樣修改您的docker-compose.yml文件(確保使用正確的路徑):

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

我已通過遵循以下鏈接上提供的解決方案解決了該問題:

如何在Django的不同設置上正確運行服務器?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM