Iniciando o projeto. Pra iniciar o projeto, use o comando
npm init -y
Por que usaremos o docker para o banco?
Ao inves de instalar o postgres na nossa maquina(é um inferno instalar isso), a gente subimos ele pra dentro de um container, um ambiente isolado, facil de criar e destruir, e o melhor, ja vem tudo configurado kaka.
O arquivo que vamos criar é o docker-compose.yml
Esse arquivo vai descrever os "serviços" que vamos rodar, que por enquanto é so o banco. Esse arquivo fica na raiz do projeto.
docker run:
Você quer subir um container do Postgres. Com docker run, você precisaria digitar um comando gigante toda vez, tipo:
docker run -d --name meu-postgres -e POSTGRES_PASSWORD=123 -e POSTGRES_DB=picpay -p 5432:5432 postgres
Funciona? funciona, mas é chato e facil de errar, sem contar que nao escala quando tu tem varios containers.
docker compose:
ele ja resolve isso. Quando tu escreve o arquivo docker-compose.yml descrevendo o que voce quer rodar, e o Docker ele cuida de criar/subir parar tudo com um unico comando.
vamos colocar nele só o serviço do banco de dados Postgres. Pra isso, precisamos definir:
-Qual imagem usar (a "base" do container, no caso, postgres)
-Variáveis de ambiente (usuário, senha, nome do banco o Postgres usa isso pra se configurar sozinho na primeira vez que sobe)
-Porta (pra você conseguir acessar o banco de fora do container, tipo pelo Prisma)
-Volume (pra os dados não sumirem quando você reiniciar o container)
vamos criar o docker-compose.yml
services:
db:
image: postgres:16
container_name: picpay_db
restart: always
environment:
POSTGRES_USER: picpay
POSTGRES_PASSWORD: picpay123
POSTGRES_DB: picpay_simplificado
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
services: Lista dos "programas" que vamos rodar. Por enquanto só um: o banco.
db: Nome que você escolheu pra esse serviço (podia ser qualquer nome, tipo banco ou postgres). Vamos usar esse nome depois pra referenciar o banco.
image: postgres:16 Diz "use a imagem oficial do Postgres, versão 16" — o Docker baixa isso automaticamente do Docker Hub.
container_name: picpay_db Nome do container quando você rodar docker ps — só facilita identificar.
restart: always Se o container cair ou você reiniciar o PC, ele sobe de novo sozinho.
environment: Variáveis que o Postgres lê na primeira inicialização pra se auto-configurar.
POSTGRES_USER/PASSWORD/DB Usuário, senha e nome do banco que serão criados automaticamente. Guarda esses valores, vamos usar no .env do Prisma daqui a pouco.
ports: "5432:5432" Formato porta_da_sua_máquina:porta_do_container. Isso permite você (ou o Prisma) acessar o banco em localhost:5432.
volumes: (dentro de db) Liga uma pasta dentro do container a um "volume" gerenciado pelo Docker, pra não perder os dados quando o container for recriado.
volumes: (no final, fora de db) Declaração do volume db_data que foi referenciado acima — é o Docker que cuida de onde isso fica salvo de verdade.
Vamos subir tudo isso para o banco.
Crie o arquivo docker-compose.yml na raiz do projeto, na mesma pasta onde fica o package.json.
Depois rode:
docker compose up -d
docker compose up → lê o docker-compose.yml e sobe os serviços descritos nele
-d → "detached", ou seja, roda em segundo plano
Por hoje é so isso, te vejo na proxima!
Top comments (0)