Criando ambiente Docker para Laravel + MySQL e PHPMyAdmin
32
0

Criando ambiente Docker para Laravel + MySQL e PHPMyAdmin

Configurando o Docker para rodar o Laravel, MySQL e PHPMyAdmin de forma rápida e fácil.

Eric Mariano
1 min
32
0

Configurando o Docker para rodar o Laravel, MySQL e PHPMyAdmin de forma rápida e fácil.

Criando ambiente Docker para Laravel + MySQL e PHPMyAdmin
Criando ambiente Docker para Laravel + MySQL e PHPMyAdmin

Toda configuração abaixo foi feita no Linux, também serve para MacOS e Windows.

Pastas

A configuração de pastas ficará da seguinte forma (sem o laravel instalado):

/laravel-blog
-/php-make
-- upload.ini
- docker-compose.yml
- up.sh
- down.sh

Docker Compose

Vamos criar o docker-compose.yml.

version: '3.5'
services:
db:
image: mysql:latest
#restart: always
environment:
MYSQL_DATABASE: 'laravel_db'
MYSQL_USER: 'laravel_user'
MYSQL_PASSWORD: 'Laravel'
MYSQL_ROOT_PASSWORD: 'Laravel'
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- ./my-db:/var/lib/mysql
app:
image: phpmyadmin/phpmyadmin:latest
links:
- db
ports:
- 13306:80
environment:
- PMA_ARBITRARY=1
volumes:
- ./php-make/upload.ini:/usr/local/etc/php/php.ini
volumes:
my-db:

Explicando um pouco da configuração acima.

Serviço DB

Temos um serviço chamado: db, nele temos a imagem do MySQL, com as variáveis de ambiente como nome do banco, usuário, password e password root.

db:
image: mysql:latest
#restart: always
environment:
MYSQL_DATABASE: 'laravel_db'
MYSQL_USER: 'laravel_user'
MYSQL_PASSWORD: 'Laravel'
MYSQL_ROOT_PASSWORD: 'Laravel'
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- ./my-db:/var/lib/mysql

O MySQL está exposto na porta 3306 externamente e internamente (dentro do container), você poderá usar um Gerenciador de Banco de Dados para administrar o banco, caso não queira utilizar o PHPMyAdmin.

Na parte de Volumes do Serviço db, temos uma pasta local chamada: my-db onde esta, estará associada a pasta: /var/lib/mysql dentro do container.

Serviço App

No Serviço app, temos a imagem do PHPMyAdmin, que depende do serviço db. Esse serviço estará exposto na porta 13306 e associado a porta 80 do container.

app:
image: phpmyadmin/phpmyadmin:latest
links:
- db
ports:
- 13306:80
environment:
- PMA_ARBITRARY=1
volumes:
- ./php-make/upload.ini:/usr/local/etc/php/php.ini

Este serviço conta com uma única variável de ambiente e adicionei também um volume para alterar a configuração do tamanho de upload de arquivos, para caso necessite fazer upload de arquivos grandes pelo PHPMyAdmin.

E por fim temos o Volume, que nada mais é o nome do volume: my-db:

O arquivo upload.ini contém a seguinte configuração.

file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

up.sh

Este arquivo será responsável por derrubar todos os containers do Docker ativos e iniciar o php artisan serve.

docker stop $(docker ps -a -q) && docker-compose down && docker-compose up -d && docker ps && php artisan serve

down.sh

Este arquivo  é responsável por derruba a aplicação Docker.

docker-compose down

Rode o comando chmod +x up.sh e posteriormente chmod +x down.sh

Feito isso você poderá rodar o up.sh ou down.sh no terminal e ver a mágica acontecer.

Por fim, para instalar o Laravel:

composer create-project laravel/laravel ./

Não esqueça criar o .env do laravel a partir do .env.example com as informações atualizadas do banco de dados.