Oi, Guilherme! Tudo certo?
Quando você usa docker compose up -d
, o Docker deve reutilizar os containers antigos se o docker-compose.yml
não tiver sido alterado. Mas se ele estiver tentando criar um novo container do banco e perder os dados, é provável que a persistência não esteja configurada corretamente.
A solução ideal é usar volumes! Assim, mesmo que o container pare, os dados continuam salvos no seu sistema e não são perdidos.
Aqui vai um exemplo de como definir isso no seu docker-compose.yml
:
services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: usuario
POSTGRES_PASSWORD: senha
POSTGRES_DB: meu_banco
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
O volume db_data
vai garantir que os dados do banco fiquem guardados, mesmo que o container seja parado, reiniciado ou até recriado.
E para subir novamente o container sem criar outro, use sempre o mesmo docker-compose.yml
e rode:
docker compose up -d
Assim ele reutiliza os containers existentes, e com o volume, os dados continuam lá.
Espero ter ajudado e bons estudos!