Ola Théo.
Tudo bem.
Vamos tentar entender o problema:
Esse erro que você está enfrentando está relacionado ao Docker tentando montar um volume (persistência de dados) no container do PostgreSQL durante a execução do pipeline (provavelmente no GitHub Actions ou similar).
A mensagem de erro relevante é:
error mounting "/home/runner/work/projeto_go_alura/projeto_go_alura/postgres-data" to rootfs at "/var/lib/postgresql/data":
...
no such file or directory
O que isso significa?
- O Docker está tentando montar um volume local (
postgres-data
) no caminho do container (/var/lib/postgresql/data
). - Mas o diretório de origem (
postgres-data
) não existe ou não é acessível no runner (máquina que está executando o pipeline). - Como está em um ambiente CI (como GitHub Actions), você não deve montar volumes locais como faria em ambiente de desenvolvimento.
Se estiver usando um docker-compose.yml
, remova o volume local (ou substitua por volume nomeado).
Exemplo errado:
services:
db:
image: postgres
volumes:
- ./postgres-data:/var/lib/postgresql/data # Isso falha no CI
Corrigido:
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data # volume nomeado
volumes:
pgdata:
Assim, o Docker cria e gerencia o volume internamente, sem depender de diretórios locais.
Se quiser manter os volumes locais no seu docker-compose.yml
para uso local, você pode usar outro arquivo de override no CI, por exemplo:
docker-compose.override.yml (para CI):
services:
db:
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
E rodar no CI assim:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
A mensagem de erro menciona:
/home/runner/work/projeto_go_alura/projeto_go_alura/postgres-data
Isso sugere que o volume está referenciando um diretório que não foi criado ou não está no repositório. Verifique:
- Se
postgres-data/
está no .gitignore
(geralmente sim, pois são dados locais). - Se está tentando montar um volume com um path que só existe na sua máquina local.
Resumo :
- No CI, nunca monte volumes locais (tipo
./postgres-data
). - Use volumes nomeados como
pgdata
que o Docker gerencia sozinho. - Se precisa manter o mesmo
docker-compose.yml
para local e CI, use arquivos override
. - Revise se há referências incorretas no pipeline ou
docker-compose
.
Faça as mudanças,execute os testes e envia um feedback com os resultados.
Bons estudos.
Até...
:)