我正在尝试使用预构建挂钩在Dotcloud的开发和生产中为Django项目安装单独的需求(实际上只是在生产中遗漏了几个调试包)。我正在定义一个DEBUG环境变量来触发调试行为,我想选择一个pip需求文件。我想使用prebuild钩子运行一个Python脚本来检查调试变量的值,并将正确的需求文件符号链接到根目录中的requirements.txt
,但这似乎不起作用。据我所知,prebuild挂钩甚至没有运行,我正在使用dotcloud push --clean
来强制进行干净安装。我误解了prebuild钩子是如何工作的吗?如果它不是使用变量需求的好方法,我还能做什么?
答案 0 :(得分:0)
我感到相当愚蠢,但我确实想提出问题,因为该方法有效。我的问题是错误的dotcloud.yml
文件,其中我的缩进包含prebuild
config
,而不是直接在服务名称下。
如果有其他人想要这样做,这里的结构对我有用:
dotcloud.yml
www:
type: python
prebuild: python dotcloud/prebuild.py
config:
python_version: v2.7
... and so on ...
dotcloud / prebuild.py
#!/usr/bin/env python
import json
import os
with open('/home/dotcloud/environment.json') as f:
env = json.load(f)
try:
os.unlink('requirements.txt')
except OSError:
pass
if str(env.get('DEBUG', False)).lower() in ['t', 'true', 'y', 'yes', 'on']:
print 'Using DEBUG mode requirements'
os.symlink('requirements/dotcloud_debug.txt', 'requirements.txt')
else:
print 'Using PRODUCTION mode requirements'
os.symlink('requirements/dotcloud_production.txt', 'requirements.txt')