2017-11-27 36 views
0

ドッキングウィンドウコンテナBのポートXXXXまたはYYYYにドッキングウィンドウのコンテナAのポートXXXXをバインドすることは可能ですのは、私は以下のようにドッキングウィンドウ・コンファイルを持っているとしましょう:はそれが

version: '2' 
services: 

    # The php-fpm container 
    app: 
    build: 
     context: ./ 
     dockerfile: app.dev.dockerfile 
    working_dir: /var/www 
    volumes: 
     - ./:/var/www 

    expose: 
     - 8003 

    # The Web Server 
    web: 
    build: 
     context: ./ 
     dockerfile: web.dockerfile 
    working_dir: /var/www 
    volumes_from: 
     - app 
    links: 
     - app:app 

    ports: 
     - 80:80 
     - 8004:8003 

だから私はポートにサービスを提供したいですWebコンテナのポート8004からAppコンテナ上の8003。 しかし私は結果を得ることができません。 私の推測では、Webコンテナ上の8004:8003のWebポートマッピングはWebコンテナのみに制限されています。 または、それは実際にAppコンテナの公開された8003ポートにマップされていますか?

もしそうなら、ウェブポート8004が実際にアプリケーションコンテナのポート8003にマップされていることをテストするにはどうすればよいですか?

Webコンテナのポート8004にAppコンテナのポート8003の一方向バインディング(またはより良い双方向バインディング)またはマッピングを作成する方法はありますか?

ホストがいくつかのアプリケーションとドッキングサービス(これらの2つのコンテナを含む)を実行していて、アプリケーションがWebコンテナのポート8004でリッスンしようとしている場合、彼は実際にAppコンテナと通信しています。

+0

好奇心の高まりから、なぜこれをやりたいのですか? 'app:8003'を介してAppコンテナに到達する際の問題は何ですか? –

+0

問題ありません。私は、アプリケーションコンテナのポート8003でxdebugを実行しています。私は自分のコードに制御を戻すことができません。だから私は私のWebコンテナを介してアプリケーションコンテナのデータファイルを提供しているので、xdebugポートがWebコンテナ自体から提供される必要があります考えた。したがって、疑問。私はxdebugをポートを使って動作させることができません:Appコンテナで直接8003:8003。 – Andy

答えて

1

コンテナは、各プロセスを別々に保つように設計されています。各プロセス/コンテナに独自のネットワークスタックがあります

要求を転送するユーザースペースプロセスがあるかどうかは、あるコンテナから別のコンテナに「マッピング」する唯一の方法です。 Apache HTTPやNginxのようにHTTPリクエストをFastCGI PHPプロセスに転送しません。

デバッグの場合は、ポートをappコンテナに直接マップします。接続できない場合は、appコンテナのデバッグ設定に問題がある可能性があります。

# The php-fpm container 
    app: 
    build: 
     context: ./ 
     dockerfile: app.dev.dockerfile 
    working_dir: /var/www 
    volumes: 
     - './:/var/www' 
    ports: 
     - '8003:8003' 

    # The Web Server 
    web: 
    build: 
     context: ./ 
     dockerfile: web.dockerfile 
    working_dir: /var/www 
    volumes_from: 
     - app  
    ports: 
     - 80:80 

ちなみに、linksはバージョン2以上の接続には必要ありません。 Composeはデフォルトでユーザ定義のネットワークを作成し、コンテナ間のアクセスを許可します。