2016-08-22 10 views
3

私は本番用のレールアプリケーションをドッキングしようとしています。Docker、dockerでcapistranoタスクを置き換える方法

現在、アプリはAnipalを使用して設定され、capistranoを使用して配備されています。

私はアプリを設定して展開するdockerfileを書いていますが、展開がやや複雑で異なるドッキングウィンドウの展開戦略のとドッキングウィンドウにカピストラーノを取り除くとドッキングウィンドウ-構成

とドッキングウィンドウを使用するの思考のための研究

capistranoに似ているアプリであるdeploy.rbは、ディレクトリを作成してアプリ名を設定したり、いくつかの変数を取得したりするといった、デプロイ前のタスクをセットアップするためのレーキタスクはほとんどありません。

ドッキングファイルでキャップタスクを複製するにはどうすればよいですか、またはドッカーファイルまたはドッキング用のコンテナを実行している現在のキャップレーキタスクを使用する方法はありますか?

答えて

1

あなたの状況に合わせて、Dockerの利点がさらに複雑さを上回っているかどうかを検討してください。それを想定して、これらのコンポーネントをより良く機能させる方法に関するいくつかの提案があります。

構成管理システムであるAnsibleは、オーケストレーション(つまり、一連のリモートマシン間でコマンドを実行する)用に設計されています。これにはCapistranoとのクロスオーバがいくつかあります。そのため、CapistranoのタスクをAnabilitiesに移植し、スタックからツール(したがって複雑さ)を取り除くと便利です。これは、アプリケーションをデプロイするために実行するdeploy.yamlプレイブックを作成している可能性があります。

Dockerは、責任が重複していますが、異なる領域の構成で重複しています。アプリケーションに必要なシステム構成の一部は、システム全体のレベルではなく、Dockerfileを使用してコンテナ内で構成することができます。

アプリケーション環境を設定するレーキタスクがある場合は、それらをDockerfileのRUNコマンドに入れることができます。ただし、を実行したときにのみ、これらの画像は実行されません。

一般的に言えば、私はこれを次のように見ています。Dockerは、アプリケーションの1つを実行するために必要なすべてのもの(コードの特定のチェックアウトを含む)を持つコンテナを設定します。 Ansibleは、コンテナを実行する環境を構成し、それらを更新して適切な場所に配置するためのすべての作業を管理します。

+0

はい、これはdockerfileをビルドしている間だけフェッチされますが、現在はcapistranoのrakeタスクをコンテナで処理するのが苦労していますか?それとも単にシェルスクリプトのそれらをdockerfileから呼び出すだけですか? btwあなたの詳細な説明をありがとう、しかし、私は容器を提供するだけAnsibleを使用します。 – slashRahul

+0

あなたのキャップコマンドが何をしているかによって異なります。それらがすでにローカルマシン上でのみ動作している場合は、dockerファイルで簡単に 'RUN 'することができます。リモートホストで動作するように設計されている場合は、dockerコンテナにsshのような標準的なオーケストレーションメソッドを使用してアクセスできるようにするか、ローカルマシン上でのみ動作するように書き直す必要があります。 –

関連する問題