You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将.env加入.gitignore后Django Elastic Beanstalk CLI部署失败如何解决?

问题核心原因

Elastic Beanstalk 的 eb deploy 命令默认基于本地Git仓库的提交记录生成部署包,只有被Git跟踪的文件才会被打包上传到实例。你将.env.prod加入了.gitignore且没有提交到仓库,所以部署包中根本不存在这个文件,实例运行时自然会抛出文件找不到的错误。


可行解决方案(按推荐度排序)

方案1:使用EB自带环境变量管理(最安全,推荐)

敏感配置本就不应该以文件形式上传到服务器,EB原生支持环境变量注入,完全可以替代.env.prod文件:

  1. 修改myapp/settings/prod.py,删除加载.env.prod的相关代码(一般是python-dotenv库的load_dotenv相关逻辑),所有配置项直接从系统环境变量读取,示例:
    import os
    SECRET_KEY = os.environ.get('SECRET_KEY')
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': os.environ.get('DB_NAME'),
            'USER': os.environ.get('DB_USER'),
            'PASSWORD': os.environ.get('DB_PASSWORD'),
            'HOST': os.environ.get('DB_HOST'),
            'PORT': os.environ.get('DB_PORT', 3306),
        }
    }
    
  2. 登录AWS控制台,进入对应EB环境的「配置」→「软件」页面,在「环境属性」板块将原来写在.env.prod里的所有键值对逐一添加保存,EB会自动将这些变量注入到实例的运行环境中。
  3. 不用修改.gitignore,直接重新部署即可,不需要再依赖.env.prod文件。

方案2:使用.ebignore文件覆盖打包规则

如果你坚持要使用.env.prod文件,可以通过EB专属的忽略规则文件实现「Git忽略提交、但部署时打包」的需求:

  1. 在项目根目录新建名为.ebignore的文件,将原有.gitignore的所有内容复制进去,额外添加一行规则:
    !.env.prod
    
  2. 这个文件的优先级高于.gitignore,存在时EB会完全忽略.gitignore的规则,按照.ebignore的规则打包:.env.prod依然不会被Git提交到仓库,但eb deploy时会自动把它加入部署包。

你现有的.ebextensions/django.config、Git忽略规则都不需要调整,也不用在配置中添加任何Git相关命令,上述两种方案二选一即可解决问题。

内容的提问来源于stack exchange,提问作者rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:15:06