2017-09-11 3 views
0

私のプロジェクトでは、お互いに頼っている多くのマイクロサービスがあります。私はDocker Composeを使用してすべてを正しい順序で起動しています。作成した追加のインスタンスに最新のイメージを使用するには、どのようにして "ドッカー作成スケール"を取得できますか?

開発中に、コンテナの新しいコードを書き込むときに、コンテナを再起動して新しいコードを試す必要があります。正常に動作します

docker-compose down && docker-compose up -d 

を、しかし〜とるまで再びライブ環境のためにあまりにも長くなり、20秒を、下にすべてを持って来ると:これまでのところ私は単にこのように、全部の再起動を使用してきました。私はマイクロサービスを中断することなく個別に再起動できるように、さまざまな戦略を検討しています。

私の最初のアプローチは、1つのインスタンスから2つに再起動するサービスの規模を拡大することです。私はその後、新しいインスタンスを指すようにプログラムでリバースプロキシ(Traefik)をリセットし、それが幸せなときには、古いものに私はdocker stopを付けます。

私のスケールコマンドは、Compose 1.8.0を使用しているので、古いバラエティです。それは次のようになります。

docker-compose scale missive-storage-backend=2 

唯一の問題は、新しいイメージがある場合は、ドッカー作曲はそれを使用しないことである - それは頑固に、すでに実行中のインスタンスと同一のハッシュを使用しています。私はdocker-compose scale --helpをチェックしており、そこには新しいイメージの使用を強制することに関して何もありません。

は今、私は普通docker run使用することができますが、その後、私は私が私のdocker-compose.ymlで、このサービスのために設定したすべてのオプションを複製する必要があるだろう、と何かが作曲の外で実行する場合、私は知りませんファイルはComposeアプリケーションの一部として理解されます(手動で起動したにもかかわらずdocker-compose downで停止するなど)。

Docker Composeのそれ以降のバージョンでは、スケール機能(it has been merged with up anyway)でさらに多くのオプションがある可能性があります。

この機能を使用する最も簡単な方法は何ですか。

(別名:綿密な再起動や他の魔術を行うための無数のオーケストレーションツールがあり、時間があれば確かに底なしの穴を探索することに感謝しています。いくつかのデプロイメントタスクはより早い勝利です。)

答えて

0

これを修正しました。まず、Compose 1.9にアップグレードしようとしましたが、それは必要な変更を提供していないようです。私はその後、scaleが別のコマンドとして推奨されなくなり、upコマンドへの切り替えとして現れる1.13にぶつかった。試験として

は、I画像がmissive-storageと呼ばれており、私はDockerfileダミー変更を加えるので、docker psは(missive-storage:latestが変更されたため)代わりd4ebdee0f3e2として実行されている容器の画像の名前を報告します。

ps行は次のようになります。これらのコンテナになり

docker-compose up -d --no-recreate --scale missive-storage-backend=2 

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS              NAMES 
45b8023f6ef1  d4ebdee0f3e2   "/usr/local/bin/du..." 4 minutes ago  Up 4 minutes                 app_missive-storage-backend_1 

が、私はその後、(missive-storage-backendは、DCサービス画像missive-storageの名前です)、このコマンドを発行します

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS              NAMES 
0bd6577f281a  missive-storage  "/usr/local/bin/du..." 2 seconds ago  Up 2 seconds                 app_missive-storage-backend_2 
45b8023f6ef1  d4ebdee0f3e2   "/usr/local/bin/du..." 4 minutes ago  Up 4 minutes                 app_missive-storage-backend_1 

ご覧のとおり、彼は私に2つのコンテナを提供します.1つは古いイメージ、もう1つは新しいイメージです。ここからは、フロントエンドプロキシに設定変更を送信してトラフィックをリダイレクトするだけで、古いコンテナstopを送信できます。

--no-recreateが重要であることに注意してください.Docker Composeがなければ、すべてを再起動して、運動の目的を破ってしまうようです。

関連する問題