Como criar um ambiente web com Nginx, PHP, MySQL e PHPMyAdmin no Docker.

Para criar um ambiente de desenvolvimento web com Nginx, PHP 8.2, MySQL e phpMyAdmin utilizando Docker, você pode usar o Docker Compose. O Docker Compose permite que você defina e execute múltiplos contêineres Docker com facilidade, orquestrando a criação de uma rede de contêineres interconectados.

Aqui está um exemplo de como você pode configurar um ambiente de desenvolvimento completo:

Passo 1: Criar o docker-compose.yml

Crie um arquivo chamado docker-compose.yml na raiz do seu projeto. O conteúdo do arquivo deve ser:

version: '3.8'

services:
  # Serviço Nginx
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/var/www/html
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - php
    networks:
      - webnet

  # Serviço PHP-FPM (PHP 8.2)
  php:
    image: php:8.2-fpm
    container_name: php
    volumes:
      - ./html:/var/www/html
    networks:
      - webnet

  # Serviço MySQL
  mysql:
    image: mysql:8.0
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: dev_db
      MYSQL_USER: dev_user
      MYSQL_PASSWORD: dev_password
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - webnet

  # Serviço phpMyAdmin
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: rootpassword
    ports:
      - "8080:80"
    depends_on:
      - mysql
    networks:
      - webnet

networks:
  webnet:
    driver: bridge

volumes:
  mysql-data:

Explicação dos serviços:

  • nginx: Configura o Nginx para servir seu site. Ele escuta na porta 80 e está configurado para usar um arquivo nginx.conf que você criará no próximo passo.
  • php: Contêiner com PHP 8.2 e PHP-FPM. Ele serve os arquivos PHP e está vinculado à pasta ./html, onde você colocará seu código.
  • mysql: Contêiner com MySQL 8.0, configurado com um banco de dados dev_db e um usuário dev_user.
  • phpmyadmin: Contêiner do phpMyAdmin, que permitirá acessar e gerenciar seu banco de dados MySQL via interface web. Está disponível na porta 8080.

Passo 2: Criar o arquivo de configuração do Nginx (nginx.conf)

Crie um arquivo chamado nginx.conf na raiz do seu projeto. O conteúdo básico do arquivo de configuração do Nginx será o seguinte:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME /var/www/html$document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Esse arquivo configura o Nginx para servir os arquivos da pasta /var/www/html e passá-los para o PHP-FPM para o processamento de arquivos .php.

Passo 3: Criar a estrutura de diretórios

Certifique-se de que sua estrutura de diretórios se pareça com isso:

.
├── docker-compose.yml
├── nginx.conf
└── html
    └── index.php

O diretório html é onde você colocará seus arquivos de código PHP. Por exemplo, crie um arquivo index.php dentro do diretório html:

<?php
phpinfo();

Isso exibirá as informações do PHP quando você acessar o seu servidor.

Passo 4: Rodar o Docker Compose

Agora, no terminal, navegue até o diretório onde você criou o docker-compose.yml e execute o comando:

docker-compose up -d

Isso irá baixar as imagens necessárias e iniciar os contêineres em segundo plano. Para ver o log dos contêineres, use:

docker-compose logs -f

Passo 5: Acessando a aplicação

  • Acesse o seu site: Abra um navegador e vá para http://localhost. Você deverá ver a página com informações do PHP.
  • Acesse o phpMyAdmin: Abra um navegador e vá para http://localhost:8080. O login padrão será:
    • Usuário: root
    • Senha: rootpassword

Agora você tem um ambiente completo de desenvolvimento com Nginx, PHP 8.2, MySQL e phpMyAdmin configurado com Docker!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *