2016-11-24 18 views
1

私は、各アプリケーションのリリースをある種のコンテナとして保存し、その後いくつかの "サーバ"専用のコンテナ(DB、Webサーバ)を用意したいと思います。これらのコンテナ間の協力はどのように機能しますか?アプリケーションバイナリ用のDockerコンテナ

私はアプリがどこにある "アプリ"コンテナにいくつかのボリュームを定義すると想像することができます。バイナリが保存され、このボリュームフォルダを "サーバー"コンテナ内のWebサーバーの展開ディレクトリとして使用します。

アプリケーションバージョンの更新プロセスはどのように機能しますか? 1つの「サーバー」コンテナで複数のバイナリを「バインド」するにはどうすればよいですか?

より一般的には、私は多分ドッキングウィンドウが適切なツールではないと私はkubernateなど群れ、のようないくつかのより抽象的な管理が必要になります、この 「SERV1にいくつかのバージョン-releasecontainerを展開、SERV2、serv3」のように展開することを想像することができますしかし、主なポイントは、アプリケーションバイナリを自己完結型の読み取り専用エンティティとしてエコシステムに知らせることです。

答えて

1

コンテナを仮想ネットワーク上でやりとりする(ただし、リソースとボリュームを共有することもできます)ためには、ドッカーを作成する必要があります。ここで簡単な例を投稿します。ここで

version: '2' 

services: 

    myapp_service1: 
    image: myapp_image1:latest 
    networks: 
     mynetwork: 
     aliases: 
      - myalias1 
    depends_on: 
    - mysql   
    expose: 
    - 8080 
    volumes: 
     - /opt/myapp/logs:/jboss-as-7.1.1.Final/logs   
    environment: 
    - "JAVA_OPTS=-Xms64m -Xmx128m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true" 
    - "db=mysql.myapp" 
    volumes_from: 
     - myapp_volume 

    myapp_service2: 
    image: myapp_image2:latest 
    networks: 
     mynetwork: 
     aliases: 
      - myalias2 
    depends_on: 
    - mysql   
    expose: 
    - 8080 
    volumes: 
     - /opt/myapp/logs:/jboss-as-7.1.1.Final/logs   
    environment: 
    - "JAVA_OPTS=-Xms64m -Xmx128m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true" 
    - "db=mysql.myapp" 
    volumes_from: 
     - myapp_volume 

    myapp_volume: 
    container_name: myapp_volume 
    image: myapp_volume_image:latest 


    mysql: 
    image: mysql 
    networks: 
     mynetwork: 
     aliases: 
      - mysql.myapp  
    expose: 
    - 3306 
    ports: 
    - "13306:3306" 
    volumes: 
    - /opt/myapp/mysql:/var/lib/mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: root 

networks: 
    mynetwork: 
    driver: bridge 

は、我々は4個のコンテナがあります

ドッキングウィンドウ-コンは次のとおりです。最初の2つは、同じボリュームを共有するサンプルアプリケーションです。ボリュームはアプリケーションのすぐ下に定義され、最終的に単純なMySql DBを実行するコンテナがあります。

共有ボリューム・コンテナ用Dockerfileが1ということである。

FROM alpine 

VOLUME /jboss-as-7.1.1.Final/mydir/config 

CMD /bin/sh -c "while true; do sleep 1; done" 

ドッキングウィンドウのコンはのは、私の-ドッキングウィンドウ-compose.yml言わせて、YMLファイルです。これを実行するには、ターミナルでこれを入力する必要があります。

ドッキングウィンドウ-構成-fパス/に/コン/私の-ドッカ - compose.ymlのアップはもちろんの画像を

を-dすでに構築されているはずです。

+0

myapp_volume_imageには展開可能なものがいくつか含まれていますか?私はアプリを更新したいときにymlを再度実行する必要がありますか?私は複数のアプリケーションを実行するにはどうすればよいでしょうか?volumes_fromセクションを拡張する必要があると思いますか?Docker-composeは環境をバンドルするだけのようですが、動的ではありません。サーバーから別のアプリケーションを実行できるように、動的にボリュームを追加することはできません。 – Zveratko

関連する問題