Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema em executar PHP com Nginx. Nginx não encontra arquivos

Boa noite ! Ando vindo bastante para o forum a procura de possiveis soluções, a minha ultima consegui resolvi em partes então finalizei o topico. Contudo, trago um problema semelhante, mas com algumas alterações ! Basicamente eu não consigo rodar nenhum arquivo tanto estatico como dinamico por meio do nginx, eu só consigo fazer a pagina do nginx ser mostrada, aparece o welcome to nginx mas ele n encontra o arquivo index.html. A estrutura do meu projeto é essa:

.
|-- docker-compose.yml
|-- package-lock.json
|-- package.json
`-- src
    |-- css
    |   `-- index.css
    |-- docker
    |   |-- config
    |   |   `-- nginx
    |   |       `-- nginx.conf
    |   `-- php.dockerfile
    |-- img
    |-- index.html
    |-- js
    |   `-- index.js
    `-- php
        `-- index.php

O meu arquivo nginx.conf é o seguinte:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;


        location / {
            root   /src;
            index  index.php index.html index.htm;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            root           /src;
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

E o meu compose é esse:

version: "3" 
services:
  # Web service layer
  nginx:
    image: nginx:1.13
    ports:
      - "8080:80"
    volumes:
      - "./src:/src"
      - "./src/docker/config/nginx/nginx.conf:/src/docker/config/nginx/nginx.conf"
    networks: 
      - production-network
    depends_on:
      - php

  # Application service layer
  php:
    build:
      dockerfile: ./src/docker/php.dockerfile
      context: .
    volumes:
      - "./src:/src"
    ports:
      - "9000:9000"
    networks: 
      - production-network
    depends_on:
      - mysql

  # Data persistence service layer
  mysql:
    image: mysql:5.7.20
    networks: 
      - production-network
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123.456

networks: 
  production-network: 
    driver: bridge

Pelo que entendi, ele não está encontrando os arquivos

1 resposta
solução!

Encontrei o problema por meio do meu amigo ! Alterei no compose em volumes da seguinte maneira:

volumes:
      - "./src:/src"
      - "./src/docker/config/nginx/nginx.conf:/etc/nginx/nginx.conf"

O que acontece é que tem um lugar padrão pro arquivo nginx.conf estar e funcionar corretamente, ao menos no meu caso. Valeu