在dotcloud上使用不同的生产和登台要求文件

时间:2013-01-23 22:08:12

标签: deployment dotcloud

我正在尝试使用预构建挂钩在Dotcloud的开发和生产中为Django项目安装单独的需求(实际上只是在生产中遗漏了几个调试包)。我正在定义一个DEBUG环境变量来触发调试行为,我想选择一个pip需求文件。我想使用prebuild钩子运行一个Python脚本来检查调试变量的值,并将正确的需求文件符号链接到根目录中的requirements.txt,但这似乎不起作用。据我所知,prebuild挂钩甚至没有运行,我正在使用dotcloud push --clean来强制进行干净安装。我误解了prebuild钩子是如何工作的吗?如果它不是使用变量需求的好方法,我还能做什么?

1 个答案:

答案 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')