相关文章推荐
伤情的凉茶  ·  Plant Com | ...·  1 年前    · 

为什么我的环境变量在Travis中不起作用?

0 人关注

我正试图用Travis为我的docker应用程序建立一个CI。在我的docker compose中,我导入了一个名为".env "的文件。这个文件被gitignored,所以Travis不能使用它。为了解决这个问题,我在我的.travis.yml文件中创建了这个空文件,并在网站上设置了环境变量。

language: python
python:
  - "3.6"
services:
  - docker
before_script:
  - touch .env
  - pip install docker-compose
script:
  - docker-compose run web sh -c "python manage.py test"

当我在git上推送时,一切似乎都在Travis那边工作,直到测试开始,Travis在我的应用程序中看到这一行代码。

ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")

在Travis日志中,我有这样的错误。

  File "/home/pur_beurre/web/pur_beurre/settings.py", line 29, in <module>
    ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
AttributeError: 'NoneType' object has no attribute 'split'
The command "docker-compose run web sh -c "python manage.py test"" exited with 1.

注意:DJANGO_ALLOWED_HOSTS = localhost

2 个评论
如果你要从 .env 导入环境变量,你需要使用 python-dotenv 包。"os.environ.get() "导入系统环境变量,而不是从.env文件导入。
@EvilReboot 你的意思是,如果我不使用python-dotenv包,我的应用程序就不应该工作?因为我的问题只是在Travis上,我的应用程序可以正常工作。
python
docker
environment-variables
travis-ci
Barthélémy Déchanet
Barthélémy Déchanet
发布于 2022-02-14
1 个回答
pugi
pugi
发布于 2022-02-14
已采纳
0 人赞同

你在什么时候和什么地方跑 export DJANGO_ALLOWED_HOSTS = localhost

还有就是 docker-compose run etc. 怎么叫?

你应该考虑到,为了让你的环境变量对你的docker-compose.yml文件可用,它们需要从你导出DJANGO_ALLOWED_HOSTS的同一个终端调用。

在调用 docker-compose up -d 之前,你需要将你的env文件源化,如图所示 在这个答案中 :