2017-06-20 20 views
0

私はプロジェクトをdockerizingしようとしていますが、PHP + Apache http serverで動作します。私はapache httpサーバー用のコンテナとphpスクリプト用の別のコンテナを用意する必要があることを知りました。私は多くを検索しましたが、それがどう動くかをまだ理解していません。私が今知っていることは、彼らがお互いに通信しなければならない同じネットワークにいる限り、ドッカーネットワークに頼るべきだということです。Docker:WebコンテナとPHPコンテナ間の通信

私が得た最も近い情報が、これはですが、それはnginxの使用:元の記事から

https://www.codementor.io/patrickfohjnr/developing-laravel-applications-with-docker-4pwiwqmh4

enter image description here

引用:

vhost.conf 

The vhost.conf file contains standard Nginx configuration that will handle http 
requests and proxy traffic to our app container on port 9000. Remember from 
earlier, we named our container app in the Docker Compose file and linked it to the web container; here, we can just reference that container by its name and Docker will route traffic to that app container. 

私の質問は何であるか私がすべき設定します上記のようなApache HTTPサーバーを使用してPHPコンテナとWebコンテナ間の通信を行うのですか?この背後にある根拠は何ですか?私は本当に混乱しています、どんな情報も非常に高く評価されるでしょう。

+0

2つのコンテナを用意する必要はなく、使用可能なPHPイメージを持つApacheがあります。 ApacheとPHPで画像を構築する方法については、こちらのチュートリアル(https://writing.pupius.co.uk/apache-and-php-on-docker-44faef716150)を参考にしてください。 –

答えて

0

この場合の設定はDocker Composeです。彼らはDocker Composeを使用して、appなどの名前をIPアドレスに解決できるようにするコンテナ内のDNS変更を容易にしています。リンクした例では、webサービスはappサービスにリンクしています。 appという名前は、DNS経由でappサービスコンテナの1つに解決されるようになりました。

この記事で使用されているwebサービスのnginx設定では、ホストとポートのペアがapp:9000です。 appサービスはポート9000のコンテナ内でリッスンし、nginxはappappサービスコンテナのIPアドレスの1つに解決します。

アプリケーションコンテナ:

docker run --name app -v ./:/var/www appimage 

Webコンテナ:

docker run --name web --link app:app -v ./:/var/www webimage 
0

あなたは二つの容器を利用するためにリンクされている例

だけドッカーでこれの同等のようなものになるだろうコマンド:

  1. 二つの容器は、次による記事の例docker-compose.ymlwebサービスでlinksディレクティブに相互に接続することができますnginxの
  2. のphp-FPM

を実行し、コンテナを実行した容器。これにより、2つのコンテナは対応するドッカーコンテナにwebappという名前を解決できます。つまり、webコンテナ内のnginxサービスは、受信したリクエストをに転送するだけで、php-fpmコンテナに転送できます。


あなたはPHP + Apacheで滞在する探している場合は、単一の容器内で探しているものを行いますコアコンテナphp:7-apacheがあります。次のプロジェクト構造

/ Project root 
- /www/ Your PHP files 

と仮定すると、プロジェクトのルートディレクトリ内の次のようにあなたがdocker-compose.ymlを生成することができます:プロジェクトのroot実行docker-compose upから次に

web: 
    image: php:7-apache 
    ports: 
    - "8080:80" 
    volumes: 
    - ./www/:/var/www/html 

localhost:8080

であなたのアプリを訪問することができるようになります

上記のdocker-compose.ymlは、ディレクトリをvolume/var/www/html)としてプロジェクト内にマウントしますntainerはApacheがファイルを提供する場所です。

関連する問題