Olá, Renan. Tudo bem?
Esse erro está relacionado às permissões do diretório de dados do PostgreSQL no Docker. No Windows, especialmente fora do WSL, pode haver algumas diferenças na forma como as permissões de arquivos e diretórios são gerenciadas, o que pode levar a esse tipo de problema.
Para contornar esse erro, você pode tentar o seguinte:
Verificar Permissões no Windows: Se o diretório que o Docker está usando para armazenar os dados do PostgreSQL tenha as permissões corretas. No Windows, pode ser necessário ajustar as permissões de segurança do diretório para garantir que o Docker tenha acesso total.
Forçar permissões corretas ao iniciar o containerAdicione este comando ao seu docker-compose.yml
na configuração do serviço do PostgreSQL:
services:
db:
image: postgres:latest
volumes:
- ./postgres-data:/var/lib/postgresql/data
command: ["bash", "-c", "chmod 700 /var/lib/postgresql/data && docker-entrypoint.sh postgres"]
Usar Volumes do Docker: Em vez de mapear um diretório do Windows diretamente, você pode usar um volume do Docker para armazenar os dados do PostgreSQL. Isso pode ajudar a evitar problemas de permissão, pois os volumes do Docker são gerenciados internamente pelo Docker e não dependem do sistema de arquivos do host. No seu docker-compose.yml
, você pode definir um volume como este:
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
WSL como Alternativa: Já que mencionou que o problema não ocorre com o WSL, essa pode ser uma solução viável. O WSL oferece um ambiente Linux dentro do Windows, onde as permissões de arquivos são gerenciadas de maneira mais consistente com o que o Docker espera.
Espero ter ajudado e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!