Dockerized Django REST Application и PostgreSQL DB - PullRequest
0 голосов
/ 02 мая 2018

Есть ли способ, при котором мне не нужно менять файл settings.py каждый раз, когда я решаю запустить свое приложение? Я имею в виду следующее:

-Каждый раз, когда я хочу запустить dockerized приложение с помощью docker-compose, мой файл 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 голосов
/ 02 мая 2018

Я исправил проблему, следуя решению, указанному по следующей ссылке:

Как правильно запустить сервер на разных настройках для Django?

0 голосов
/ 02 мая 2018

Самый простой способ: использовать два отдельных файла настроек.

При работе на локальном компьютере используйте settings.py.

При работе в Docker, используйте settings-docker.py (или как его там), и присоедините этот файл к контейнеру как settings.py. Таким образом, ваше приложение внутри контейнера будет видеть только файл settings.py, как и ожидалось.

Просто измените файл docker-compose.yml следующим образом (убедитесь, что вы указали правильный путь):

volumes: 
  - .:/agent-technologies
  - settings-docker.py:/app/settings.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...