0

プリビルド フックを使用して、Django プロジェクトの個別の要件を Dotcloud での開発と運用にインストールしようとしています (実際には、運用環境で除外されているデバッグ パッケージがいくつかあります)。デバッグ動作をトリガーする DEBUG 環境変数を定義していますが、pip 要件ファイルを選択したいと考えています。prebuild フックを使用して、デバッグ変数の値をチェックし、正しい要件ファイルをrequirements.txtルート ディレクトリにシンボリック リンクする Python スクリプトを実行したかったのですが、うまくいかないようです。私が知る限り、prebuild フックは実行されておらずdotcloud push --clean、クリーン インストールを強制しようとしています。prebuild フックの仕組みを誤解していますか? 可変要件を使用するのが適切でない場合、他に何ができますか?

4

1 に答える 1

0

私はかなり馬鹿げていると感じますが、この方法が機能するので、質問を残したいと思います。私の問題は、サービス名のすぐ下ではなく、の下にdotcloud.ymlインデントが含まれているファイルの欠陥でした。prebuildconfig

他の誰かがこれをしたいのなら、これが私のために働く構造です:

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')
于 2013-01-23T22:23:28.657 に答える