djangoのsettings.pyを本番とローカルで分ける(docker)


下記のように本番と環境でsettings.pyを下記のように分ける。

docker-compose-django/
├ docker-compose.yml
├ django-project ┬ settings.py 
│                └ local_settings.py 
└ manage.py

docker-compose.ymlにenvironmentを追記すればpython manage.py runserver 0.0.0.0:8000で常にlocal_settingsが使われる。

docker-compose.yml
version: '3'

services:
  app:
    build: ./docker/python
    # imageの代わりに./docker/phpにあるDockerfileからコンテナを作成
    restart: always
    environment:
     DJANGO_SETTINGS_MODULE: ${DJANGO_SETTINGS_MODULE:-config.local_settings}
    volumes:
      - .:/work
      - gunicorn:/var/run/gunicorn
      - ./static:/work/static


逆にsettings.pyを使いたい場合、
python manage.py runserver 0.0.0.0:8000 --settings config.settings
とコマンドを打ってやれば使える。