{"id":21371625,"url":"https://github.com/willry/ambiente-docker-laravel","last_synced_at":"2025-07-13T07:31:43.248Z","repository":{"id":129940004,"uuid":"314669552","full_name":"WillRy/ambiente-docker-laravel","owner":"WillRy","description":"Ambientes docker-compose - Laravel, MySQL 8, Redis e Suporte a MIX e Node.JS","archived":false,"fork":false,"pushed_at":"2024-11-09T15:16:42.000Z","size":249,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-09T16:24:11.897Z","etag":null,"topics":["docker","docker-compose","dockerswarm","laravel","nginx","php-fpm","xdebug"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WillRy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-20T21:07:34.000Z","updated_at":"2024-11-09T15:16:46.000Z","dependencies_parsed_at":"2024-06-13T23:02:04.543Z","dependency_job_id":null,"html_url":"https://github.com/WillRy/ambiente-docker-laravel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillRy%2Fambiente-docker-laravel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillRy%2Fambiente-docker-laravel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillRy%2Fambiente-docker-laravel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillRy%2Fambiente-docker-laravel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WillRy","download_url":"https://codeload.github.com/WillRy/ambiente-docker-laravel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225862805,"owners_count":17535998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","dockerswarm","laravel","nginx","php-fpm","xdebug"],"created_at":"2024-11-22T08:14:37.106Z","updated_at":"2024-11-22T08:14:37.678Z","avatar_url":"https://github.com/WillRy.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ambiente de Desenvolvimento - Laravel, MySQL 8, Suporte a Laravel MIX / Vite e Node.JS\n\nEste ambiente de desenvolvimento permite executar aplicações Laravel, dando suporte para:\n\n- Varias versões do php\n- Diversos plugins do php, como GD,imagick, redis, mongod e xdebug\n- MySQL 8\n\n## Organização do ambiente\n\nO ambiente está dividido em pastas contendo versões do PHP, seguindo o padrão:\n\n**php-\"versao\"-\"sistema-operacional\"**\n\n## Como executar o ambiente?\n\n* 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\n\n\n* 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**\n\n\n* Em seguida, na raiz do ambiente, execute o comando:\n  \n  ```shell\n  # para garantir que a pasta com os entrypoints e demais infos tenha permissões de leitura/execução\n  sudo chmod 777 -R ./docker\n  docker-compose up -d\n  ```\n\n* Acesse o projeto na URL: \n\nhttp://localhost:8000\n\n* Adicione no seu .gitignore os seguintes itens:\n  * docker/dbdata: local onde estão os arquivos gerados pelo mysql\n  * .composer: cache gerado pelo composer 2\n\n\n## Estrutura final de pastas\n\n```\n...suas pasta do laravel\ndocker/\ndocker-compose.yaml\n```\n\n**O docker compose e a pasta docker devem estar na raiz do projeto**\n\n\n\n## Como o ambiente funciona\n\nO ambiente foi dividido em 2 principais containers e 5 containers opcionais\n\n### Principais\n\n- 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.\n\n- mysql8: Container com o DB e script de inicialização\n\n### Opcionais(uso de php-fpm)\n\nCaso queira usar o php-fpm, existe o container do php fpm e dois servers (podendo escolher qual utilizar)\n\n- phpfpm: O php fpm para uso de fast-cgi\n\n- nginx: Se comunica com o **PHP-FPM** via **FAST-CGI**\n\n- apachefpm: Se comunica com o **PHP-FPM** via **FAST-CGI**\n\n\nPrincipais ferramentas usadas internamente nos containers:\n\n* Foi aplicada a utilização da biblioteca **dockerize** nos containers, para\n  permitir que os containers respeitem a **ordem correta de inicialização**.\n  Ex. Container do php inicializar somente após o MySQL estiver respondendo.\n\n* O container do **PHP espera o container de banco iniciar.** \n\n* O container do **nginx/apache, espera o PHP estar inicializado**\n\n## Configuração de servidores\n\nPor 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.\n\nA configuração dos servidores está dessa forma:\n\nO **apache com mod** php: **./docker/modphp/vhost.conf**\n\nO **NGINX** está em **./docker/nginx/nginx.conf**\n\nO **APACHEFPM** está em:\n\n* **./docker/apache/httpd.conf**\n\n* **./docker/apache/httpd-vhosts.conf**\n\n\n## Permissões de usuário\n\nPara evitar quaisquer problemas de permissões de usuário entre os containers\ne 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.\n\nCom essa personalização, não haverá conflitos de permissões em arquivos gerados\npelos containers.\n\n\n## Exemplo de configuração das IDEs para debuggar\n\nO Xdebug está **configurado na porta 9001**, para evitar conflitos com o PHP-FPM.\n\n**PHPSTORM**\n\n![PHPSTORM](./midias/php-storm.png)\n\n\u003e Nota-se que o **name** e **host** são de acordo com o server_name do nginx.conf\n\n**VSCODE**\n\n![VSCODE](./midias/vscode.png)\n\n\u003e A configuração é a com nome de \"XDEBUG-DOCKER\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillry%2Fambiente-docker-laravel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillry%2Fambiente-docker-laravel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillry%2Fambiente-docker-laravel/lists"}