2017-01-15 4 views
0

公式のnginxとphpドッカーの画像を使って、単純なindex.phpファイルを実行したい。公式のnginxとPHPドッカーの画像を使った "Hello World"の仕方?

  1. Ubuntuのバージョンは16.04.1 LTS(私のホストマシン)
  2. ドッキングウィンドウのバージョンが1.12.6
  3. ドッカ・コンバージョン1.9.0

私の地元である:これらは私の前提条件私のホストマシン上のディレクトリはそうのようになります。

\code 
    index.php 
docker-compose.yml 
nginx.conf 

のindex.phpは、いくつかの簡単なコードが含まれています

web: 
    image: nginx:latest 
    ports: 
     - "8181:80" 
    volumes: 
     - ./code:/code 
     - ./nginx.conf:/etc/nginx/nginx.conf 
    links: 
     - php 

php: 
    image: php:7-fpm 
    volumes: 
     ./code:/code 

nginx.confは、これらの命令が含まれています(バージョン1):

worker_processes 1 
events { worker_connections 1024; } 
http { 
    sendfile on; 
    server { 
     listen 80; 
     index index.php index.html; 
     root /code; 

     location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass php:9000; 
      fastcgi_index index.php; 
      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param PATH_INFO $fastcgi_path_info; 
     } 

    } 
} 

私は実行するすべてこれにより

<?php 
    echo phpinfo(); 
?> 

ドッキングウィンドウ-compose.ymlは、これらの命令(バージョン1)が含まれコマンド:

docker-compose up --force-recreate 

私は、コンソールイメージが作成されますが、localhost:8181に移動すると、エラーメッセージが表示されます。これは、エラーメッセージの全文です:クライアント:172.17.0.1、サーバー:

* 1「/etc/nginx/html/index.phpは」(そのようなファイルやディレクトリ2)が発見されていません:リクエスト: "GET/HTTP/1.1"、ホスト: "localhostを:8181"

それは/etc/nginx/html/フォルダに検索し、nginx.confファイルからroot /code;の指示を無視する理由を私は本当に、不思議。それが今では同じように見えるようにもかかわらず、私は、ドッキングウィンドウ-compose.ymlを編集:あなたが見ることができるように

web: 
    image: nginx:latest 
    ports: 
     - "8181:80" 
    volumes: 
     - ./code:/etc/nginx/html 
     - ./nginx.conf:/etc/nginx/nginx.conf 
    links: 
     - php 

php: 
    image: php:7-fpm 
    volumes: 
     ./code:/code 

、私は、Web /ボリュームの下に一つだけの命令を変更しました:今

./code:/code -> ./code:/etc/nginx/html 

、私はdocker-compose up --force-recreateを再実行し、ローカルホストに行くとき:172.17.0.1、サーバー:上流、クライアントからの応答ヘッダを読みながら「原発不明スクリプト」:標準エラー出力に送信され

のFastCGI:8181私は別のエラーメッセージが表示され、要求を: "GET/HTTP/1.1"、upストリーム: "fastcgi://172.17.0.2:9000"、ホスト: "localhost:8181"

ここで私はそれがどういう意味か分かりません。その後、私はnginx.confのさまざまな命令の組み合わせを試しましたが、まったく同じエラーメッセージが表示されて失敗するたびに終了しました。だから私の疑問はどうすればそれを動作させることができるのだろうか? docker-compose.ymlとnginx.confは、世界で最も単純なスクリプトを実行できるようにするにはどうすればよいでしょうか?

答えて

1

PHPコンテナのボリューム定義に " - "がありません。

php: 
    image: php:7-fpm 
    volumes: 
     ./code:/code 

は次のようになります。

php: 
    image: php:7-fpm 
    volumes: 
     - ./code:/code 

私はそれを自分自身をテストし、その補正して、それが正常に動作します:

Starting test_php_1 
Starting test_web_1 
Attaching to test_php_1, test_web_1 
php_1 | [19-Jan-2017 14:41:09] NOTICE: fpm is running, pid 1 
php_1 | [19-Jan-2017 14:41:09] NOTICE: ready to handle connections 
web_1 | 172.17.0.1 - - [19/Jan/2017:14:41:39 +0000] "GET/HTTP/1.1" 200 82883 "-" "curl/7.35.0" 
php_1 | 172.17.0.3 - 19/Jan/2017:14:41:39 +0000 "GET /index.php" 200 
関連する問題