2016-05-03 7 views
0

私は特定の状況に陥っています。私はきれいな解決策を見つけようとしています。現在のディレクトリにあるPython内のスクリプト

現在、私たちは18種類のリポジトリを持っています。すべてpythonデプロイメントユーティリティがvenvで18回コピーアンドペーストされています...これは嫌です。

これらのユーティリティを「ツール」ドッカーイメージのようなものに焼き付けて、各フォルダにすべての依存関係を18回インストールする必要はなく、必要な場所でそれらを実行したいと考えています。

/devtools/venv 
/user-service/code 
/data-service/code 
/proxy-service/code 
/admin-service/code 

最終的に私は、ユーザーがサービスにCDが好き、とdocker run tools version_update.pyのようなコマンドを実行したい - とドッキングウィンドウの画像は、ユーザーがサービスのコードを実装し、それに対してスクリプトを実行しています。

私はこれをどうやって行い、私が見ていないより良い方法がありますか?

答えて

1

なぜドッカーを使用しますか?

あなたのサービスの横に(またはあなたが合っていると思われる場所に)「tools」ディレクトリにスクリプトを置くことをお勧めします。その後、サービスディレクトリの1つにcdしてpython ../tools/version_update.pyを実行してください。

0

ドッカーのイメージによって異なりますが、ここでは基本的な概念です。

あなたのドッカーイメージでは、作業をしたいソースコードをマウントするディレクトリ/codeとすべてのスクリプトを含むディレクトリ/toolsがあるとします。

ドッカーイメージの/codeディレクトリに必要なディレクトリをマウントし、必要なスクリプトを実行できます。コンテナの作業ディレクトリは/codeに設定され、パスには/toolsが含まれます。あなたの例を使用すると、ドッカーの実行コマンドは次のようになります。

docker run -v /user-service/code:/code tools version_update.py 

これは、toolsドッキングウィンドウのイメージを実行した容器に/codeディレクトリにローカル/user-service/codeディレクトリをマウントし、そのコードにversion_update.pyスクリプトを実行します。終了します。

他のすべてのプロジェクトでも同じイメージを使用できます。マウントポイントを変更するだけです。

docker run -v /data-service/code:/code tools version_update.py 
docker run -v /proxy-service/code:/code tools version_update.py 
docker run -v /admin-service/code:/code tools version_update.py 

を(すべて同じ構造を持っていると仮定)そして、あなたは別のツールを実行したい場合は、ちょうどあなたが渡すコマンドを変更します。

docker run -v /user-service/code:/code tools other_command.py 
関連する問題