Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro na Step que Inicia o Banco

Está ocorrendo o seguinte erro no meu pipeline na Step do Banco de Dados:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/home/runner/work/projeto_go_alura/projeto_go_alura/postgres-data" to rootfs at "/var/lib/postgresql/data": change mount propagation through procfd: open o_path procfd: open /var/lib/docker/overlay2/ea571c1718321d664961db8ea23a4a78bab617298ea161cf9f1a893c582f3fe8/merged/var/lib/postgresql/data: no such file or directory: unknown

Qual ajuste devo fazer para resolver esse erro?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

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é...
:)

Muito obrigado, agora a step não está mais falhando!

Como é no ambiente do GitHub Actions, utilizei o volume nomeado.