Solucionado (ver solución)

Importante

Estás viendo la versión anterior de la nueva experiencia de Alura que estamos preparando para ti. Pronto tendrá una identidad visual completamente nueva, pensada para potenciar tus estudios.

Solucionado
(ver solución)
2
respuestas

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?

2 respuestas
solución!

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.