2017-02-02 7 views
3

Dockerを使用してプロジェクトを構成するためのベストプラクティスについていくつか提案したいと思います。Dockerでマルチティアアプリケーションを構成するベストプラクティス

私はプロジェクトXが2つの主要アプリケーションStoreと製品管理アプリケーションで構成されているとします。彼らは完全に異なるアプリケーションですが、同じプロジェクトの一部です。彼らは、独自のサービス、ソースコード、リポジトリ、インフラストラクチャを持っています。

ストア[mysqlの、MongoDBは、elasticsearch、nginxの、PHP、アプリのソースコード] PMA彼らは二つの異なるリポジトリがあると、自分のドッキングウィンドウ-コンを持っているので、[mysqlの、nginxの、PHP、アプリのソースコード]

どのようにして1つのコマンドですべてを動かすことができますか?

ドッカーの作成を拡張し、すべてを一度に実行できるドッカーレポを作成する必要がありますか?できるだけ多くの

答えて

0
  • アイソものなので、あなたがそれらを分離し、彼らが必要とする唯一のライブラリおよびバイナリと 、できるだけコンテナは限り小さく作るのMongoDB、MySQLと が必要な場合(別名 microcontainers)。これを実現するには、画像 をalpine linuxを使って構築することもできます。
  • データベースコンテナでは、コンテナではなくホストの にデータを格納するためにボリュームを使用すると、処理が高速になります。構成ファイルをボリュームに格納して、構成を変更するたびにコンテナにアクセスする必要がないようにすることもできます。
  • Dockefilesを使用し、画像を手動で構築する代わりに、 イメージを任意のホストで複製可能にし、それらをgitに格納することができます。
  • docker composeを使用して、すべてのコンテナを一度にビルドして実行します。
0

まず、データベースのコンテナ化はお勧めしません。その多くのレプリケーションがいくつかのホスト上でIOとディスクの利用率を低下させるだけなので、多くの良いユースケースはありません。また、データベース/データストアの典型的な専門化とメンテナンス/管理の多くが失われます。

Dockerfilesのgitリポジトリを作成します。これにより、将来的にシステムの更新が容易になります。私の構造は普通です

/Dockerfiles 
    /Project 
     Dockerfile 
     (required files) 
     docker-compose.yml 

また、上記のドッカーファイルからそれらのイメージを構築してください。無制限に管理バージョンを作成し、devopや自動デプロイメントを容易にします。

  1. 群れクラスター(1以上のホスト)を作成します
  2. (必要であれば名前の店とPMA)2つのオーバーレイネットワークを作成します
  3. /ドッキングウィンドウでホストに取り付けられるように、共有NFSストレージポイントを作成します。 。マウントポイントは、ドッカーグループの読み込み、書き込み、および実行が必要です。これはelasticsearchクラスタの永続ストレージに使用されます
  4. php-fpm(ソースコードを実行するため)、NGINXをプロキシする、および弾性検索のためのストアネットワーク上のサービスを作成します。彼らはあなたにもちょうどapacheの/ PHPの画像を作成することができ

nginxの(プロキシ)、PHP-FPMのためのPMAネットワーク上のサービスを作成します

  • 名前でオーバーレイネットワーク上で相互に参照することができます。それがbeadockstar/laravelのためにしていることです。

    PHPシステム上のストレージに注意してください。 でないものをアップロードする必要がある場合は、がCDNに何らかの形で抽象化されていない場合、アップロードが行われるディレクトリが/ dockerホストディレクトリ(または他の一様なホストすべてのswarmホストのディレクトリ)

  • 関連する問題