Tengo una simple ventana acoplable-componer config con php-fpm y nginx, y no puedo ver ningún archivo php. Cuando voy a localhost, muestra No se Encuentra el Archivo.

He intentado todo lo que he podido encontrar en la red, pero todo lo que he intentado ha fallado.
Funciona muy bien para html, pero no para los archivos php. Parece ser un camino problema, o algo así.

Me encuentro con este error cuando me docker-compose logs:

project3-php_1     | 172.17.0.5 -  29/Mar/2016:13:29:12 +0000 "GET /index.php" 404
project3-front_1   | 172.17.0.1 - - [29/Mar/2016:13:29:12 +0000] "GET /HTTP/1.1" 404 27 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
project3-front_1   | 2016/03/29 13:29:12 [error] 8#8: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.17.0.1, server: localhost, request: "GET /HTTP/1.1", upstream: "fastcgi://172.17.0.2:9000", host: "localhost"

Aquí está mi ventana acoplable-componer:

project3-front:
    image: nginx
    ports:
      - "80:80"
    links:
      - "project3-php:project3-php"
    volumes:
      - ".:/home/docker"
      - "./nginxdir/default.conf:/etc/nginx/conf.d/default.conf"
      - "./html:/usr/share/nginx/html"

  project3-php:
      build: phpdir
      volumes:
        - ".:/home/docker:rw"
        - "./html:/var/www/html"
      ports:
        - "9000:9000"
      working_dir: "/home/docker"

Entonces mi dockerfile para php:

FROM php:5.6-fpm
EXPOSE 9000

mi defecto.conf para nginx:

server {
  listen 80;
  server_name localhost;
  index index.php index.html;

  error_log  /var/log/nginx/error.log  warn;
  access_log /var/log/nginx/access.log;
  root /usr/share/nginx/html;

  location ~ \.php$ {
      fastcgi_pass project3-php:9000;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

pwd de la carpeta principal es:

/media/revenge/share/PROJECTS/docker_images/php7-nginx

La jerarquía de archivos es:

├── docker-compose.yml
├── html
   ├── index.php
├── nginxdir
   ├── default.conf
├── phpdir
   ├── dockerfile
   └── php.ini

La carpeta entera es chmod 777

Cualquier idea, sería muy apreciado. Estoy seguro de que hay algo que no me llega. Gracias de antemano.

InformationsquelleAutor mik | 2016-03-29

4 Comentarios

  1. 10

    Aquí es ¿cómo se puede encontrar el problema

    1. Interruptor en la nginx modo de depuración con la costumbre de command, por ejemplo:

    ventana acoplable-componer.yml

    web:
        image: nginx
        volumes:
            - "~/www/project:/var/www"
            - "~/www/project/vhost.conf:/etc/nginx/conf.d/site.conf"
        # Add this row:
        command: [nginx-debug, '-g', 'daemon off;']
    1. Editar su «site.conf» archivo (en este ejemplo es el ~/www/project/vhost.conf archivo) Interruptor en el modo de depuración por el error_log (agregar «depuración» de la palabra al final):
    error_log "/var/log/nginx/error.log" debug;
    1. (Re)inicio de la «web» contenedor:
    docker-compose stop web
    docker-compose up -d web
    1. De prueba de los recipientes, son todos los contenedores de la ejecución?
    docker-compose ps
    1. De prueba en el navegador
    2. «Conectar» y ver o descargar ( http://blog.dcycle.com/blog/ae67284c/docker-compose-cp ) y ver el /var/log/nginx/error.log archivo.

    El problema en la mayoría de los casos

    No ha establecido todavía, o utiliza otra estructura de directorios en la «web» y «php-fpm». Si desea utilizar la estructura diferente de lo que usted tiene que fijar el «fpm estructura» en la fastcgi_param SCRIPT_FILENAME lugar, como este:

    ventana acoplable-componer.yml

    phpfpm:
        image: php:fpm
        volumes:
            - "~/www/project:/var/www/html/user/project"

    «del sitio.conf»

    fastcgi_param SCRIPT_FILENAME /var/www/html/user/project$fastcgi_script_name;
    • «El problema en la mayoría de los casos; no ha establecido todavía, o utiliza otra estructura de directorios en la «web» y «php-fpm»» Usted salvó mi día, gracias!
  2. 3

    Encontré:

    Que me estaba perdiendo esta línea en el volumen de PHP en la sección de la ventana acoplable-componer:

    «./html:/usr/share/nginx/html»

    he aquí lo que la ventana acoplable-componer debería verse así:

    project3-front:
        image: nginx
        ports:
          - "80:80"
        links:
          - "project3-php:project3-php"
        volumes:
          - ".:/home/docker"
          - "./nginxdir/default.conf:/etc/nginx/conf.d/default.conf"
          - "./html:/usr/share/nginx/html"
    
      project3-php:
          build: phpdir
          volumes:
            - ".:/home/docker:rw"
            - "./html:/var/www/html"
          ports:
            - "9000:9000"
          working_dir: "/home/docker"

    La absoluta raíz (aquí «/usr/share/nginx/html») en el nginx predeterminado.conf archivo tuvo que ser establecido así en el php de la parte de la ventana acoplable-componer (fue sólo bajo nginx antes)

    Que es un alivio 😉

  3. 0

    En mi caso el volúmenes: de php nginx estaban apuntando la correcta (y por lo tanto el mismo) directorio. Pero en mi nginx config hubo un NGINX_SERVER_ROOT: señalar el camino equivocado.

    Así que asegúrese de que usted compruebe que todos los volúmenes y de la raíz del directorio de configuración. Algunos son fáciles de pasar por alto.

  4. 0

    Tuve el mismo problema pero este no fue resuelto por cualquiera de esta respuesta aquí:

    Ayer una ventana acoplable Actualización de éxitos en el que se ha instalado. El problema en función de esta actualización es que la (vEthernet (DockerNAT)) de la Red ha sido cambiado. De esa manera mi firewall (en mi caso Kaspersky) restablecer mi firewall de red «pública» en lugar de «confiable».

    Me di cuenta de esto por abrir «ventana acoplable -> Ajustes -> Dispositivos Compartidos«. En el primer aspecto, todo parece estar bien. Hubo un «tick» en cada uno de los dispositivos que necesito para ser compartido. A continuación, he probado a deshabilitar y habilitar mis dispositivos compartidos de nuevo. Por que mi dispositivo compartido de nuevo el error por defecto «de Un firewall está bloqueando el Intercambio de archivos entre Windows y los contenedores. Ver documetation para obtener más información.» se acercó. -> PERFECTO!!. El dispositivo compartido no es capaz de acceder a los archivos, sino ventana acoplable persiste en el estado que su bien.

    Así yo podría solucionarlo por:

    • Conjunto (vEthernet (DockerNAT)) de la Red como de confianza de nuevo en mi Kaspersky «Firewall de la Red» los ajustes.
    • Reiniciado mi ventana acoplable contenedor mediante docker-compose up y todo funciona como un encanto. Mis archivos se puede acceder de nuevo.

Dejar respuesta

Please enter your comment!
Please enter your name here