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