INSTAGRAM LINKEDIN DEV.TO TWITTER
- Uma estrutura completa para criar um ambiente no docker para se trabalhar com Laravel.
- Essa estrutura inicial é excelente para desenvolver uma SPA com Laravel ou ambiente para API
- Laravel
- nginx:alpine - versions
- php:8.1.0-fpm
- redis:alpine
- phpmyadmin:latest
- Mysql 5.7.22
- Node 16 LTS
- Mail Hog
Clone o repositório
git clone https://github.com/labdockers/laravel_docker_v10.git
Clone o repositório para criar um projeto do Laravel mais recente
git clone https://github.com/laravel/laravel.git example-project
Observação:
- Esses comandos funciona em ambient linux.
Vamos copiar os arquivos docker-compose.yml, Dockerfile e o diretório docker para o nosso projeto recente criado.
cp -r laravel_docker_v10/* example-project/
Acesse a pasta do seu projeto (example-project) e vamos criar o arquivo .env
cp -r .env.example .env
Observação:
- Você pode mudar nome da sua pasta example-project para o que você quiser.
No seu arquivo docker-compose, uma observação importante, DB_HOST, CACHE_DRIVER, REDIS_HOST todos eles tem que ter o nome igual do seu container que está configurado no docker-compose. Automaticamente o docker faz referência e identifica o IP do container e acrescenta no ambiente de variável do .env, por isso é suficiente só colocar nome do container em vez do ip.
Vamos fazer o deploy dos containers do projeto
docker-compose up -d
Para acessar o container
docker-compose exec nomedomeuprojeto bash
Execute os seguintes comandos
composer install
depois
php artisan key:generate
e depois
php artisan config:cache
e para finalizar o
npm install
- Para acessar a sua aplicação http://localhost:8180
- Para acessar o phpmyadmin http://localhost:8181
- Para acessar o e-mail http://localhost:8100/
Observação:
- Não esqueça de adicionar no seu arquivo .gitignore a pasta /docker/mysql/*
- Caso tente refazer build da sua aplicação com docker-compose up -d --build e se aparecer um erro, verifique a pasta docker/mysql/dbdata se ela estiver protegida para escrever, alterar ou excluir, use o esse comando do linux para da permissão na pasta.
- Não esqueça que para executar esse comando, abra o terminal dentro da pasta docker/mysql/
chmod -R 777 dbdata
Sim, é só ir nas configurações docker-compose e alterar as portas do serviço. Por exemplo, quero de 8181
ports:
- 8181:80
para 8182
ports:
- 8182:80
No docker-compose, você pode alterar o nome do network de acordo com o nome do seu projeto, para ficar mais fácil identificar o projeto que está trabalhando. Não esqueça de alterar de todos os containers.
networks:
- nome-da-minha-aplicacao
Você pode mudar o nome do container do seu projeto, veja o exemplo abaixo
container_name: alguma coisa
para
container_name: para-nome-da-minha-aplicacao
Se mudar o nome do serviço, por exemplo
services:
# project
app:
container_name: nome-da-minha-aplicacao
build:
de
services:
# project
nome-novo-aqui:
container_name: nome-da-minha-aplicacao
build:
Presta atenção no documento todo e onde estiver nome app troca pelo nome novo que colocou.
E também Não esqueça de atualizar também no arquivo docker/nginx/laravel.conf
fastcgi_pass app:9000;
para
fastcgi_pass nome-novo-aqui:9000;
Para parar todos containers de uma vez
docker stop $(docker ps -qa)
Para remover os containers
docker rm $(docker ps -qa)
Para remover todas as imagens de uma vez
docker rmi $(docker images -qa)
Para remover uma imagem especifica a força
docker rmi -f aqui_voce_digita_codigo_da_imagem
- Observação: Não precisa digitar o código todo, os 3 primeiros caracteres do código já serve.