2016-09-12 5 views
6

私は、単純なDjangoアプリケーション(5つのコンテナ、3つのイメージ)を記述する2つの作成ファイル(docker-compose.yml)を持っています。生産中にDocker Composeスタックを実行するための推奨される方法はありますか?

私はこのスタックを稼働させたいと思っています。スタック全体が起動し、コンテナがクラッシュした場合に再起動したり、再作成したりします。私が気にかけているボリュームはなく、コンテナは重要な状態を保持せず、自由にリサイクルすることができます。

このような方法で、生産者に特にドッカーを使用することについての情報はほとんど見つかりませんでした。 The documentationは役に立ちますが、起動時に何も言及していないし、Amazon Linuxを使用しているので、(現在)Docker Machineにアクセスできない。私はsupervisordを使用してプロセスをベビーシットにし、起動時に起動するようにしていましたが、最終的にDockerデーモンによって監督されてしまうので、Dockerのコンテナでこれを行う方法はないと思いますか?

私はすべてのサービスにrestart: alwaysを入れて起動スクリプトを作成し、起動時にdocker-compose up -dを実行することを考えています。堅牢な方法で本稼働中のドッカー作成スタックを管理するための推奨される方法はありますか?

EDIT:私は、堅牢な方法でコンテナスタックのdocker-compose upに相当するものを実行するための「シンプルな」方法を探しています。スタック内で宣言されたすべてのコンテナが同じマシンに置かれていることを私は知っています。この場合、複数のインスタンス間で同じスタックのコンテナを編成する必要はありませんが、それは同様に知っておくと便利です。

+0

の場合には、それらを再起動したときにAWSだからあなたは必ずしも本格的なオーケストレーターではなく、 'ドッキングウィンドウがup'構成を保証し、単一のサーバーの事のいくつかの並べ替えをしたくないあなたのコンテナを開始しますとどまる?ドッカーの作成や何かのためのmonitのような? – Timo

+0

@TimoLehto私は前にmonitに遭遇したことはありませんが、一見して私は 'monock for docker compose'と私が探しているものにかなり近くなると思います。 )失敗した場合 –

答えて

7

Composeはクライアントツールですが、docker-compose up -dを実行すると、すべてのコンテナオプションがエンジンに送信され、保存されます。 restartalways(または、好ましくはunless-stoppedto give you more flexibility)と指定すると、ホストが起動するたびにdocker-compose upを実行する必要はありません。あなたがブート時に起動するconfigured the Docker daemonを持って提供

ホストが開始

は、ドッカーを再起動するフラグが付けられているすべてのコンテナを開始します。だから、あなただけ一度 docker-compose up -d を実行する必要があるとドッカーは残りの世話をします。

Swarmの複数ノードにわたるコンテナのオーケストレーションについては、​​を使用することをお勧めしますが、これは現在(Docker 1.12の時点で)実験中です。基本的には、分散システムを表すComposeファイルからバンドルを作成し、それをリモートでSwarmにデプロイします。ドッカーは動きが速いので、すぐに機能が利用できると期待しています。

+0

これは、最も簡単な解決策である - 私は '再起動を実現していない:always'は、同様にドッカーデーモンを再起動しても持続! –

1

生産中にdocker-composeを使用する方法について詳しくは、documentationをご覧ください。しかし、彼らが言及したように、composeは主に開発とテストの環境を目的としています。

コンテナを本番環境で使用する場合は、適切なツールを使用してコンテナをオーケストレーションすることをお勧めします(Kubernetes)。

+0

リンク先のドキュメントが最新ではありません。 Kubernetesは面白そうに見えますが、学習曲線は急峻に見えますが、ドッカーとネイティブでは動作しません。 –

+0

私は最新のドキュメントで私の返信を更新しました。 – JesusTinoco

1

あなたはswarmkitservice(ドッカ1.11+)としてDjangoアプリケーションを整理することができた場合は、タスクを使用してアプリケーションの実行を編成することができます。

Swarmkit has a restart policyswarmctl flags参照)

再始動ポリシー:オーケストレーション層は、タスクを監視し、指定されたポリシーに基づいて、故障に反応します。
オペレータは、再起動条件、遅延、および制限(所定の時間枠内の最大試行回数)を定義できます。 SwarmKitは、別のマシン上でタスクを再起動することを決定できます。これは、障害のあるノードが徐々にタスクを使い果たしてしまうことを意味します。

"クラスタ"にノードが1つしかない場合でも、オーケストレーションレイヤーはコンテナが常に稼働していることを確認します。

1

あなたはあなたが求めるもののために構築されていECSを使用していないなぜあなたはそうAWSを使用することを言います。 5つのコンテナのパックであるアプリケーションを作成します。クラスタ内でどのEC2インスタンスをどれくらい多くインスタンス化するかを構成します。

あなたは自分のドッキングウィンドウ-compose.ymlは難しいことではありません特定のDockerrun.aws.jsonに変換する必要があります。

デプロイともクラッシュ

+0

ECSは良いでしょうが、このインスタンスではAWSインフラストラクチャを管理できず、提供されたEC2インスタンスを使用する必要があります –

関連する問題