2

我有一个Django项目,并且正在使用Postgres数据库。我想找到一种更简单的方法来在本地和 Github 上存储我的凭据,这样我就可以在这两个地方运行测试,但我的敏感信息都不在 git repo 中。

即使该数据库仅存在于我的计算机上(并且 Github 测试数据库在 GitHub 上一次仅存在大约一分钟),我想为SECRETS使用可能的最佳实践,所以当我上线时,我已经准备好了。

目前,我拥有的唯一敏感数据是数据库密码。以下是我如何将我的真实密码保存在 GitHub 之外。

settings.py(在 Git 中):

VAR_1='abc'
VAR_2 = '123'

#DOES NOT INCLUDE DATABASE CONFIG

VAR_3 = 'efg'

# Add settings from local file into main settings
try:
    from .localsettings import *
except ImportError:
    import sys
    print('localsettings not defined.')

localsettings.py(不在 Git 中):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'real-db-name',
        'USER': 'real-user',
        'PASSWORD': 'real-password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

testsettings.py(在 Git 中):

# import main settings and then overright certian values
try:
    from .settings import *
except ImportError:
    import sys
    print('settings not defined.')

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'github-db-name',
        'USER': 'github-db-user',
        'PASSWORD': 'github-user-password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

使用此设置,我可以在本地正常运行测试,python manage.py test 但是当我在 Github 上运行它们时,我必须使用python manage.py test --settings=path.to.testsettings

有没有一种方法可以像 GitHub 那样在本地存储秘密,这样我就可以只拥有一个设置文件,它就可以在本地和 GitHub 上工作?

4

1 回答 1

0

我会考虑将秘密从环境变量传递给 Django 配置文件。 https://django-environ.readthedocs.io/en/latest/

然后,您只需将带有秘密的 env 变量传递给在 Github 操作中运行的容器。

于 2020-10-05T05:47:53.700 回答