Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/willry/ambiente-docker-laravel
Ambientes docker-compose - Laravel, MySQL 8, Redis e Suporte a MIX e Node.JS
https://github.com/willry/ambiente-docker-laravel
docker docker-compose dockerswarm laravel nginx php-fpm xdebug
Last synced: 2 months ago
JSON representation
Ambientes docker-compose - Laravel, MySQL 8, Redis e Suporte a MIX e Node.JS
- Host: GitHub
- URL: https://github.com/willry/ambiente-docker-laravel
- Owner: WillRy
- Created: 2020-11-20T21:07:34.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-09T15:16:42.000Z (3 months ago)
- Last Synced: 2024-11-09T16:24:11.897Z (3 months ago)
- Topics: docker, docker-compose, dockerswarm, laravel, nginx, php-fpm, xdebug
- Language: Dockerfile
- Homepage:
- Size: 243 KB
- Stars: 6
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ambiente de Desenvolvimento - Laravel, MySQL 8, Suporte a Laravel MIX / Vite e Node.JS
Este ambiente de desenvolvimento permite executar aplicações Laravel, dando suporte para:
- Varias versões do php
- Diversos plugins do php, como GD,imagick, redis, mongod e xdebug
- MySQL 8## Organização do ambiente
O ambiente está dividido em pastas contendo versões do PHP, seguindo o padrão:
**php-"versao"-"sistema-operacional"**
## Como executar o ambiente?
* Clone o repositório, escolha a versão do php que quer usar, e copie a pasta **docker** e **docker-compose.yaml** para a raiz do projeto laravel
* Em seguida configure no .env as credenciais do banco de dados. **Lembrando que o host deve ser o nome do serviço docker responsável pelo banco**, neste caso é **db**. As credenciais podem ser encontradas no **docker-compose.yaml**
* Em seguida, na raiz do ambiente, execute o comando:
```shell
# para garantir que a pasta com os entrypoints e demais infos tenha permissões de leitura/execução
sudo chmod 777 -R ./docker
docker-compose up -d
```* Acesse o projeto na URL:
http://localhost:8000
* Adicione no seu .gitignore os seguintes itens:
* docker/dbdata: local onde estão os arquivos gerados pelo mysql
* .composer: cache gerado pelo composer 2## Estrutura final de pastas
```
...suas pasta do laravel
docker/
docker-compose.yaml
```**O docker compose e a pasta docker devem estar na raiz do projeto**
## Como o ambiente funciona
O ambiente foi dividido em 2 principais containers e 5 containers opcionais
### Principais
- modphp: O PHP e o Apache em execução com modphp(modulo do apache para php), com os plugins e o **XDEBUG** . Este container também permite a personalização do php.ini, através de um arquivo **custom.ini** montado via bind volume.
- mysql8: Container com o DB e script de inicialização
### Opcionais(uso de php-fpm)
Caso queira usar o php-fpm, existe o container do php fpm e dois servers (podendo escolher qual utilizar)
- phpfpm: O php fpm para uso de fast-cgi
- nginx: Se comunica com o **PHP-FPM** via **FAST-CGI**
- apachefpm: Se comunica com o **PHP-FPM** via **FAST-CGI**
Principais ferramentas usadas internamente nos containers:
* Foi aplicada a utilização da biblioteca **dockerize** nos containers, para
permitir que os containers respeitem a **ordem correta de inicialização**.
Ex. Container do php inicializar somente após o MySQL estiver respondendo.* O container do **PHP espera o container de banco iniciar.**
* O container do **nginx/apache, espera o PHP estar inicializado**
## Configuração de servidores
Por padrão está configurado o **APACHE com MODPHP**, porém no **docker-compose.yaml** há um setup **comentado** contendo o **Apache** e **Nginx**, para uso do PHP-FPM.
A configuração dos servidores está dessa forma:
O **apache com mod** php: **./docker/modphp/vhost.conf**
O **NGINX** está em **./docker/nginx/nginx.conf**
O **APACHEFPM** está em:
* **./docker/apache/httpd.conf**
* **./docker/apache/httpd-vhosts.conf**
## Permissões de usuário
Para evitar quaisquer problemas de permissões de usuário entre os containers
e o host que está executando o ambiente, os containers(php e mysql) foram configurados para executarem com um usuário específico, contendo o ID de usuário **1000**, o mesmo ID utilizado por muitas distribuições Linux para o usuário padrão.Com essa personalização, não haverá conflitos de permissões em arquivos gerados
pelos containers.## Exemplo de configuração das IDEs para debuggar
O Xdebug está **configurado na porta 9001**, para evitar conflitos com o PHP-FPM.
**PHPSTORM**
![PHPSTORM](./midias/php-storm.png)
> Nota-se que o **name** e **host** são de acordo com o server_name do nginx.conf
**VSCODE**
![VSCODE](./midias/vscode.png)
> A configuração é a com nome de "XDEBUG-DOCKER"