Django Cookiecutter с использованием шаблона переменных среды в производстве

Я пытаюсь понять, как работать с производственными файлами .env в проекте, созданном django cookie Cutter.

Документация для этого здесь:

https://cookiecutter-django.readthedocs.io/en/latest/developing-locally-docker.html#configuring-the-environment

Проект генерируется и создает папки .local и .production для переменных среды.

Я пытаюсь развернуть дроплет докера в цифровом океане.

Правильно ли я понимаю:

Папка .production НИКОГДА не проверяется в системе управления версиями и создается только в качестве примера того, что нужно создать на производственной машине, когда я буду готов к развертыванию?

Поэтому, когда я развертываю, в рамках этого процесса мне нужно выполнить извлечение/клонирование проекта в дроплете докера, а затем либо

вручную создать папку .production со структурой папок переменных производственной среды?

OR

RUN merge_production_dotenvs_in_dotenv.py локально, чтобы создать файл .env, который я копирую в рабочую среду, и настроить мой production.yml для его использования?

Спасибо Крис


person Chris Wedgwood    schedule 18.02.2019    source источник


Ответы (2)


Производственные файлы env НЕ входят в систему контроля версий, только локальные. По крайней мере, это намерение, производственные файлы env не должны находиться в системе контроля версий, поскольку они содержат секреты.

Однако они добавляются в образ docker с помощью docker-compose при его запуске. Вы можете создать машину Docker с помощью драйвера Digital Ocean, активировать ее из ваш терминал и запустите образ, который вы создали, запустив docker-compose -f production.yml -d up.

person Bruno A.    schedule 18.02.2019

Django cookiecutter добавляет .envs/.production и фактически все в папке .envs/ в систему управления версиями. Вы узнаете это, проверив файл .gitignore. Файл .gitignore не содержит .envs, что означает, что папка .envs/ зарегистрирована в системе управления версиями.

Поэтому, когда вы хотите развернуть, вы клонируете/перетаскиваете репозиторий на свой сервер, и ваша папка .production/ тоже будет там.

Вы также можете запустить merge_production_dotenvs_in_dotenv.py для создания файла .env, но .env не будет проверен в системе управления версиями, поэтому вам придется скопировать файл на свой сервер. Затем вы можете настроить файл docker-compose для включения path/to/your/project/.env в качестве env_file для любой службы, которой нужны переменные среды в файле.

Вы можете использовать scp для простого копирования файлов с локального компьютера на сервер следующим образом:

scp /path/to/local/file username@domain-or-ipaddress:/path/to/destination
person olaoluwa_98    schedule 18.02.2019
comment
Я только что создал новый проект django cookie cutter, и он находится в нижней части файла: .env .envs/* !.envs/.local/, в котором говорится, что он сохраняет все, кроме prod envs? - person Chris Wedgwood; 18.02.2019
comment
Вы правы, Крис, локальные файлы .env могут храниться в системе управления версиями, но не в производственных. Этот ответ неточен. - person Bruno A.; 19.02.2019
comment
Я только что еще раз проверил. Плохо, я, должно быть, отредактировал файл .gitignore моего собственного проекта. Благодарю за разъяснение! - person olaoluwa_98; 20.02.2019