#docker #deployment #docker-compose #digital-ocean #django-3.0
#docker #развертывание #docker-создать #цифровой океан #django-3.0
Вопрос:
Мне любопытно, каков наилучший способ безопасного хранения секретов (паролей, секретных ключей и т.д.) В приложении Django на сервере.
Ранее я использовал Heroku с Git, и все секреты хранились в среде Heroku с использованием веб-интерфейса. Тогда я мог бы просто использовать os.environ['secret_key']
для получения секретов.
Сейчас я пытаюсь выполнить развертывание на сервере DigitalOcean с помощью Docker-Compose. Я читал о секретах docker, но это оказалось небезопасным.
Я также могу сохранить их в файле JSON, но я не уверен, что это также безопасно. Вероятно, тогда они должны быть закодированы.
Ответ №1:
Переменные среды — обычная практика для хранения секретов приложения. Тем не менее, значения для этих переменных не должны храниться в вашем (контролируемом исходным кодом) docker-compose.
Чтобы указать, что переменная должна быть передана с хоста в контейнер, вы просто используете имя переменной без значения:
# docker-compose.yml
version: '3'
services:
web:
build: .
environment:
DATABASE_URL:
SECRET_KEY:
Затем вы можете выбрать различные способы размещения этих переменных на вашем сервере. Один из способов — создать .env
файл с этими значениями. Например:
# .env
SECRET_KEY=123
DATABASE_URL=postgresql://admin:s3cr3tz@db/mydb
Этот файл, конечно, не передан в репозиторий git и хранится в тайне.
Используя приведенные выше docker-compose.yml
и .env
, вы можете запустить docker-compose config
, чтобы увидеть полный результат:
$ docker-compose config
services:
web:
build:
context: /vagrant/temp
environment:
DATABASE_URL: postgresql://admin:s3cr3tz@db/mydb
SECRET_KEY: '123'
version: '3.0'
Комментарии:
1. Большое спасибо. Похоже, мне нужно просто выбрать способ, которым я могу настроить этот env-файл на моем сервере.