2017-02-22 2 views
0

ベストプラクティスに関して質問があります。docker-composeとvcsでDockerfileを使用するベストプラクティス

私はanglejsで開発されたウェブフロントエンドと、データを取得するapiを持っていると言います。私はそれらの2つを別々のリポジトリに入れました。 今私は全部をドッキングしたい。私の考えは、それぞれのプロジェクトにDockerファイルを置いて環境を指定することでした。これまでのところ、しかし、私は同時に、これら2つのサービスを同時に開始するドッキング・ファイルを作成していますか?まず最初に、私はこのファイルを置くべきです。そして、第二に、どのようにイメージが常に最新であることを保証することができますか?あなたがdocker-compose up --buildを実行することができますdocker-compose開始するには

frontend: 
    build: ./frontend #folder in which Dockerfile of frontend is saved (to build the image) 
    image: my-frontend:1.0 #give a name to your image 
container_name: frontend-container #containername when a container instance of your image is running 

:あなたのdocker-compose.yamlあなたは画像ごとにこのような何かを書くことができて

project/ 
- project/docker-compose.yaml 
- project/frontend/ (contains Dockerfile + necessary files) 
- project/api/ (contains Dockerfile + necessary files) 

答えて

1

あなたは、このような構造を使用することができます。 --buildタグは、変更があった場合に画像を再作成しますので、ドッカーファイル(画像)に変更があったときに最新の状態に保つことができます。

Docker-composeは、上から下まで「読み込み」しています。したがって、最初にあなたのdocker-compose.yamlに記載されているサービスが作成されます。自分のAPIだと思うでしょう。なぜならそれはおそらくそれ自体で存在し、フロントエンドはそれに接続する必要があるからです。時には、最初のサービスが遅すぎます。つまり、2番目のサービスは既に起動していますが、最初のサービスを見つけることができず、接続がクラッシュします。これは、wait-for-it.shスクリプトを使用して解決できます。 2番目のサービスはスクリプトを使用して、最初のサービスがいつ起動したかをチェックします。それが始まったら、それはそれ自身のサービスを開始するでしょう。

+0

こんにちはlorenzvth7ご返信ありがとうございます。この場合、サブモジュールとして2つの他のプロジェクト(frontedとapi)を含む別のリポジトリを作成する必要がありますか? – hesyar

+1

私はそれが最高の/最も簡単な解決策になると思います。 – lvthillo

関連する問題