Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Docker PHP + BD

Boa tarde ! Estou práticando Docker nos ultimos dias e muitos problemas foram resolvidos. Estou tentando rodar o meu arquivo teste.php . Mas não está funcionando. A hierarquia dos meu arquivo php é o seguinte:

portfolio-grupo
    - src
        - php
            - teste.php

Possuo um index.html na raiz do projeto, ele roda normalmente, ou seja, a configuração de tudo está para sites estaticos. Possuo 3 arquivos de dockerfile, sendo que o do php é php.dockerfile encontrado em ./src/docker/php.dockerfile.

Meu arquivo docker-compose.yml é o seguinte:

version: '3'
services: 
  nginx:
    build:
      dockerfile: ./src/docker/nginx.dockerfile
      context: .
    #image: nginx
    container_name: nginx
    ports:
      - "8080:80"
    networks:
      - production-network
    depends_on:
      - "node1"
      - "node2"
      - "node3"

  apache:
    build:
      dockerfile: ./src/docker/php.dockerfile
      context: .
    container_name: php
    #restart: always
    networks:
      - production-network
    depends_on:
      - mongodb

  mongodb:
    image: mongo
    networks:
      - production-network

  node1:
    build:
      dockerfile: ./src/docker/node.dockerfile
      context: . 
    #image: node
    container_name: node1
    ports: 
      - "3000"
    networks: 
      - production-network
    depends_on: 
      - "mongodb"

  node2:
    build:
      dockerfile: ./src/docker/node.dockerfile
      context: . 
    #image: node
    container_name: node2
    ports: 
      - "3000"
    networks: 
      - production-network
    depends_on: 
      - "mongodb"

  node3:
    build:
      dockerfile: ./src/docker/node.dockerfile
      context: . 
    #image: node
    container_name: node3
    ports: 
      - "3000"
    networks: 
      - production-network
    depends_on: 
      - "mongodb"

networks:
  production-network:
    driver: bridge

E o arquivo php.dockerfile:

FROM php:latest
MAINTAINER Elton Miranda
COPY . /var/www
WORKDIR /var/www
#RUN docker-php-ext-install mongodb

Usei como referências esses dois links, mas sem sucesso ! https://medium.com/operacionalti/ambiente-de-desenvolvimento-php-com-docker-46e0eb2fac3d

https://cursos.alura.com.br/forum/topico-docker-compose-yml-para-rodar-uma-aplicacao-php-com-mysql-73288

A respeito do banco de dados, estou usando o mongodb, mas não tem problema ser outro, mas gostaria de uma explicação de como eu posso usar o banco de dados no Docker se possivel, com algum arquivo de exemplo para verificar se a conexão foi executada com sucesso e se os dados estão sendo recebidos ao menos ! Obrigado

3 respostas

Oi Elton, o que exatamente não está funcionando? Você tem alguma mensagem de erro pra mostrar pra gente?

solução!

Opa, tudo bom ? Wanderson, esse era o problema, não retornava nenhum erro ! kk Mas não era mostrado o index.php. Como ninguém me respondeu tentei resolver sozinho mas sem resultado, mas consegui rodar o php nesse projeto pronto desse link: https://medium.com/operacionalti/ambiente-de-desenvolvimento-php-com-docker-46e0eb2fac3d

Tentei ajustar para o meu projeto atual mas não funcionou. Quando eu executo o docker-compose up -d me retorna 403 Forbidden nginx/1.13.12.

O meu docker-compose.yml atualmente está assim:

version: "3" 
services:
  # Web service layer
  nginx:
    image: nginx:1.13
    volumes:
      - "./src/php:/var/www/html"
      - "./src/docker/config/nginx/nginx.conf:/etc/nginx/nginx.conf"
    ports:
      - "8080:80"
    depends_on:
      - php

  # Application service layer
  php:
    build:
      context: ./src/docker
    volumes:
      - "./src/php:/var/www/html"
    ports:
      - "9000:9000"
    depends_on:
      - mysql
    #environment:
     # - MYSQL_USER=root
     # - MYSQL_PASS=123.456

  # Data persistence service layer
  mysql:
    image: mysql:5.7.20
    #volumes:
     #- "db_data:/var/lib/mysql"
     #- "./mysql/initial_data:/docker-entrypoint-initdb.d"
    ports:
      - "3306:3306"
    #environment:
     # - MYSQL_ROOT_PASSWORD=123.456

#volumes:
 # db_data:

E o Dockerfile da seguinte maneira:

FROM php:7.1-fpm
RUN docker-php-ext-install mysqli pdo_mysql

O docker-compose.yml mudei o caminho do volume e aonde mais tivesse algum caminho especifico. O meu projeto segue a seguinte estrutura:

.
├── docker-compose.yml
├── index.html
├── package.json
├── package-lock.json
├── src
│   ├── css
│   │   └── index.css 
│   ├── docker
│   │   ├── config
│   │   │   └── nginx
│   │   │       └── nginx.conf
│   │   └── Dockerfile
│   ├── img
│   ├── js
│   │   └── index.js 
│   └── php
│       └── index.php
└── teste.html

A configuração do nginx é a 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   /var/www/html;
            index  index.php index.html index.htm;
        }

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

Quero entender o do por que não está funcionando, está um pouco complicado isso !

Oi Elton, desculpa a demora. Me parece que você conseguiu resolver o problema, sim? Marcou como solucionado... Compartilha com a gente a solução por favor?