2017-11-23 11 views
0

私のプロジェクト用のドッカー環境を作成しようとしています。私に説明させてください。Docker-compose:2つのコンテナを結合/結合する

私はmy-project.warという戦争をもたらすmy-projectというプロジェクトを持っています。私はmy-project:latestと呼ばれるDockerイメージを作成しました。my-project.war/my-projectディレクトリにあります。それは簡単だった。

my-project:latesttomcat:latest(これはTomcatの公式Dockerイメージです)をdocker-compose.ymlに組み合わせたいとします。私はこのdocker-compose.ymlを開始しました:

version: "3" 
services: 
    my-project: 
    image: my-project:latest 
    tomcat: 
    image: tomcat:latest 
    ports: 
     - 8080:8080 

しかし、どのように私は今tomcat容器にwebapps/ディレクトリにmy-projectコンテナからファイル/my-project/my-project.warをコピーすることができますか?これはドッカーの作成で可能ですか?新しいDockerfileから始める必要がありますか?

つまり、の2つのコンテナに組み合わせると問題が発生しています。

+0

あなたの 'のTomcatでこの展開を行う必要があります。あなたは'ドッカ-compose'を使用する前に、 'Dockerfile'経由latest'。だから、あなたがコンテナを構成するときには、すでにすべてがあるでしょう –

答えて

1

ドッカー作成ではできません。

FROM my-project:latest as project 

FROM tomcat:latest 
COPY --from=project /my-project/my-project.war /webapps 

あなたがdocker build -t app .を使用してこのイメージを構築したら、あなたがいることをTomcatのイメージを持っています:基本的にMultiStage Build

と呼ばただし一つに画像を合成する新しいDockerfileを作成し、ドッキングウィンドウに非常に便利な機能を使用することができます`/ webapps 'にあなたの戦争が含まれています。ドッキングウィンドウ・コンで

はちょうどこの画像を使用します。

version: "3" 
services: 
    application: 
    image: app 
    ports: 
     - 8080:8080 
+0

ありがとう、それは賢い方法です。 Dockerの画像 'my-project'がすでに' scratch'ではなく 'tomcat:latest'から派生していて' my-project.war'を '/ webapps'にコピーした方が簡単ではなかったと思います私が当初行ったように '/ my-project'の代わりに)?この方法では、2つではなく1つのDockerイメージを作成するだけです。これはスマートなアイデアですか? –

+0

はい、間違いなくそれを行います。 – yamenk

+0

明日は実験してお知らせします。私はその答えを受け入れます。 –