Stack Laravel 10 - Docker, Apache (com PHP 8.2 e Node 20.5), PostgreSQL 12 e pgAdmin4 (v7.5)
- 1. Instalação
- 2. Arquivos e Pastas
- 3. Configuração
- 4. Execução do docker
- Extra: scripts
- Links
- Referências
Você pode configurar essa stack em um projeto existente ou usá-la para criar um novo projeto.
Caso você queira adicionar essa stack em um NOVO PROJETO
, antes execute esse comando para criá-lo (substitua nome_da_pasta
pelo nome do seu projeto):
docker run --rm -it \
-u $(id -u):$(id -g) \
-v $(pwd):/app \
-w /app \
composer:latest "$@" \
composer create-project laravel/laravel:10.* nome_da_pasta
Faça o clone desse repositório dentro da pasta do seu projeto:
git clone git@github.com:WilliamJSS/stack-laravel10.git
Na pasta docker
estão os arquivos de imagem (Dockerfile) - usados como base para criação dos containers - e os arquivos de configuração para cada serviço/container. E na raiz do repositório o arquivo que gerencia todos eles.
docker/apache/web.conf
: arquivo de configuração do host do apachedocker/pgadmin/servers.json
: arquivo de configuração do servidor do banco de dados no pgadmindocker/postgres/backup.sql
: arquivo de backup do banco (postgres)docker-compose.yml
: arquivo de gerenciamento dos serviços/containers.env.docker
: variáveis de ambiente necessárias para o docker
Os arquivos listados são os únicos que você vai precisar.
Agora você precisa alterar o nome do projeto nos arquivos em que ele aparece. Caso esteja usando o Visual Studio Code, existe uma opção que você pode usar para facilitar isso:
Substitua project_name
pelo nome do seu projeto nos arquivos docker-compose.yml
, docker/apache/web.conf
, docker/apache/Dockerfile
e docker/pgadmin/servers.json
.
Com os arquivos configurados você pode mover a pasta docker
e o arquivo docker-compose.yml
para a raiz do seu projeto.
No .env
do seu projeto, substitua os valores das chaves referentes ao banco de dados (DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE e DB_USERNAME) pelos que estão presentes no arquivo .env.docker
e adicione também as chaves/valores para o sgbd (SGBD_EMAIL e SGBD_PASS). Feito isso, você pode apagar os arquivos restantes desse repositório.
🔴 Com exceção do DB_PASSWORD, SGBD_EMAIL e SGBD_PASS, os valores das outras chaves você NÃO DEVE alterar, pois são utilizadas em outros arquivos (docker/pgadmin/servers.json
e docker-compose.yml
)
Suba os containers:
docker compose up -d
Acesse o terminal do container onde está o projeto:
docker exec -it project_name_site
Alguns scripts que podem ser úteis no seu projeto (adicione-os na seção de scripts do arquivo package.json
):
"setup": "npm run packages && npm run permission && npm run key",
"key": "php artisan key:generate",
"permission": "chmod -R 777 .",
"packages": "composer install && npm install",
"db": "php artisan migrate:fresh && php artisan db:seed"
A ideia é apenas subir os containers e rodar um npm run setup
no terminal, e pronto!
Dentro da pasta do projeto, fora do terminal do container, você pode rodar esse comando para gerar um backup da versão atual do seu banco (substitua project_name
pelo nome do seu projeto):
docker exec -i project_name_db pg_dump -U project_name project_name > ./docker/postgres/backup.sql
O diretório após o sinal de > é onde ficará salvo o backup.
Assim que estiver tudo configurado, você pode acessar o pgAdmin e o seu projeto pelo navegador por meio dos links abaixo: