2017-02-09 25 views
1

私は立ち往生して助けが必要です。ドッカークラウドに複数のスタックを設定しました。スタックは、今、私は、Webコンテナ上でコマンドを実行する必要があるなどのデータは、MySQL、ウェブ、elasticsearch、同じようドッキング・クラウド・コンテナ内でクローンジョブまたはタスクを実行する

を複数のコンテナを実行しています。

*/10 * * * * php /var/www/public/index.php run my job 

をしかし、私は悪い習慣になる一つの容器に2つのコマンドを実行しているドッキングウィンドウの概念を理解したように私のウェブDockerfileは

CMD ["apache2-foreground"] 

で終了します。ドッキングウィンドウの前に私は、cronジョブの例でこれをやりました。しかし、私はどのように上記の1つのcronjobのような仕事を予定しますか?

私はCMDでもcronを起動する必要がありますか?

CMD ["cron", "apache2-foreground"] (should exit with 0 before apache starts) 

両方のコマンドを実行する起動スクリプトを作成する必要がありますか?私の意見で

賢いソリューションは、他のサービスがリンクされているdockercloud haproxy 1、のような他のサービスを作成することです。

次に、cronサービスは、リンクされたコンテナ/スタックのStackfileで定義されているexecコマンドを実行します。

一般的に、私は3つのオプションを参照ドッキングウィンドウでは、あなたの助け

答えて

2

してくれてありがとう:

  • は異なる容器に
  • 実行を、あなたのcronプロセスを実行し、同じコンテナ
  • であなたのcronプロセスを実行しますホスト上のcronはドッキングステーションの外にあります

cronを同じコンテナあなたはhttps://github.com/phusion/baseimage-docker

に見ることもできますし、内部にのみ実行中のプロセスは、cronデーモンである別のコンテナを作成することができます。私はこれに便利なリンクはありませんが、私たちはそこにいます。次に、cron呼び出しを使用して他のコンテナに接続し、実行したいものを呼び出します。 apacheのコンテナで十分に簡単なはずですが、呼び出されたときに何をしたいのかを行う最小限のhttp APIエンドポイントを公開します(注入に脆弱でないことを確認します。つまり、引数を渡さないでください。 。

あなたがホストの制御だけでなく、あなたが(AB)が実行されているcronデーモンを使用することができますを持っている場合(私は現在、私のコンテナでこれを行います)。私はドッカーの雲を知らないが、何かは、これはあなたのためのオプションではないかもしれないと私に伝えます。

関連する問題