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áriodev_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
- Usuário:
Agora você tem um ambiente completo de desenvolvimento com Nginx, PHP 8.2, MySQL e phpMyAdmin configurado com Docker!