2017-09-15 4 views
2

ドッカー開発環境では、ドッカー作成用ファイルを使用しています。すべてうまく動作し、私たちは本当に幸せですが、私は働くことになる小さな問題が1つあります。docker-composeファイルでホストipを動的に取得する方法は?

xdebugでphp-fpmをインストールします。次のように今、私たちはそれを設定:

PHP-Dockerfile:

FROM php:7.1-fpm 

RUN docker-php-ext-install pdo_mysql \ 
&& docker-php-ext-install json \ 
&& pecl install xdebug \ 
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ 
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ 
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini 

ドッキングウィンドウ-compose.yml:

services: 
    //[...] 
    php: 
    build: ./docker/php/ 
    container_name: dev-php 
    expose: 
     - 9000 
    volumes: 
     - .:/var/www/html 
    environment: 
     XDEBUG_CONFIG: remote_host=192.168.0.50 
     PHP_IDE_CONFIG: "serverName=docker" 

このセットアップは正常に動作します:我々はしてデバッグすることができますローカルシステム上のIDEのxdebug唯一の問題は、docker-compose-fileに1つのIP "192.168.0.50"静的を保存することです。 を構築する際に動的ホストIPアドレスを取得するためのよりスマートな方法がある。だから、各従業員のhastは今...実行する前に、自分自身のIPへの質問を

それを変更するには?

+0

むしろ無関係な質問:なぜあなたは '9000'ポートを公開する必要がありますか?外からphp-fpmに接続しようとしていますか?それは何を提供していますか? – LazyOne

+0

この記事を参照http://tarunlalwani.com/post/debugging-php-xdebug-docker/ –

+0

私はphpstormを使用していますが、xdebugにはこのポートが必要です。 – j0nnybrav0

答えて

2

は、ホストのIPアドレスを取得しますない「魔法のコマンド」もありませんので、この問題を回避する唯一の方法は、環境変数を持つソリューションです:

services: 
    //[...] 
    php: 
    build: ./docker/php/ 
    container_name: dev-php 
    expose: 
    - 9000 
    volumes: 
    - .:/var/www/html 
    environment: 
    XDEBUG_CONFIG: remote_host=${WORKER_IP} 
    PHP_IDE_CONFIG: "serverName=docker" 

そして.envファイルで、この変数を渡す:

https://docs.docker.com/compose/environment-variables/#configuring-compose-using-environment-variables. 

幸運:あなたはドキュメントを読み込むことができます

https://docs.docker.com/compose/env-file/ 

の詳細: )

+0

こんにちはKrzysztofとあなたの返事に感謝します。残念ながら、docker-composeは、ドッカーのための "-e"属性を提供していません(https://docs.docker.com/compose/reference/up/)。 現時点では、私にとって唯一の可能性は、envファイルを使用することです。すべての従業員が自分で設定する必要があります。 – j0nnybrav0

+0

はい、そうです。申し訳ありません。回答が編集されました。 –

関連する問題