2017-01-01 9 views
2

DockerでPHPを実行するにはguideに従いますが、nginxはではありません。はsite.confで設定したルートディレクトリを指します。Docker + nginx + PHP - nginxはルートディレクトリを指していませんか?

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

nginx: 
    image: nginx:latest 
    ports: 
     - 8080:80 
    volumes: 
     - ./code:/code 
     - ./site.conf:/etc/nginx/conf.d/site.conf 
    links: 
     - php 
php: 
    image: php:7-fpm 
    volumes: 
     - ./code:/code 

site.conf:

server { 
    index index.php index.html; 
    server_name localhost; 
    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 
    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; 
    } 
} 

コード/ index.phpを:私の端末に

<?php 
echo phpinfo(); 

、私が実行します。

docker-compose up 

結果:

enter image description here

しかし、それは次のようになります。

enter image description here

任意のアイデアなぜですか?

EDIT:

server { 
    index index.php index.html; 
    server_name docker.loc; 
    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 
    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; 
    } 
} 

私はdocker-compose upを実行すると、私はこのエラーを取得:

docker.phpから来ている
nginx_1 | 172.17.0.1 - - [01/Jan/2017:20:35:17 +0000] "GET/HTTP/1.1" 403 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36" 
nginx_1 | 2017/01/01 20:35:17 [error] 6#6: *5 directory index of "/code/" is forbidden, client: 172.17.0.1, server: docker.php, request: "GET/HTTP/1.1", host: "docker.php:8080" 

答えて

2

ドメイン名が競合しています。 site.confにserver_name docker.loc;を設定します。ローカルマシンの/ etc/hostsに127.0.0.1 docker.locを追加します。その後、あなたはドッキングされたアプリケーションにアクセスすることができます。docker.loc:8080

または解決方法を試すことができます。私は問題が多分にあると思う/etc/nginx/sites-available/default

+0

ありがとう。しかし 'docker.loc:8080' – laukok

+0

でサイトを閲覧すると、' 403 Forbidden'のページが表示されますので、テストしました。構成ファイル –

+0

を表示しますか? – laukok

関連する問題