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

Container encerrando

Boa tarde!

Tentei por em prática o conteúdo da aula, porém na etapa final, ao executar o container com o projeto notei que não conseguia listar o mesmo utilizando o comando "docker ps". Ao utilizar "docker ps -a" notei que o container foi iniciado e encerrado, porém o comando "npm start" estava listado na coluna de comandos do relatório. Ao inspecionar esse container vi que ele não exibe mensagem de erro alguma, e encerra com código de status "(1)". Revisei o Dockerfile e parece estar tudo correto, e o projeto Allbooks está atualizado em sua versão mais recente. O que pode estar dando errado?

Segue prints do comando usado para criar o container Insira aqui a descrição dessa imagem para ajudar na acessibilidade , o dockerfile Insira aqui a descrição dessa imagem para ajudar na acessibilidade e o status Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Olá Raphael.

Tudo bem?

O fato do container estar encerrando com código de status 1 indica que houve algum erro na execução do comando npm start. Mesmo que não haja uma mensagem de erro explícita, isso geralmente está relacionado a algum problema no seu código ou nas dependências do projeto.

Aqui estão algumas sugestões para investigar e resolver o problema:

  1. Verifique o Log do Container: Utilize o comando docker logs <container_id> para ver os logs do container e identificar possíveis erros durante a execução, abra o Docker e verifica os logs do container, ou com o comando no terminal:

    docker logs <container_id>
    
  2. Verifique o package.json: Certifique-se de que o script start no package.json está correto e que todas as dependências estão devidamente listadas e instaladas.

    "scripts": {
        "start": "react-scripts start"
    }
    
  3. Teste Localmente: Antes de criar o container, teste o comando npm start localmente na sua máquina fora do container para garantir que o projeto está funcionando corretamente.

  4. Verifique o Dockerfile: Seu Dockerfile parece estar correto, mas certifique-se de que todas as dependências estão sendo copiadas corretamente e que o comando npm install está instalando tudo sem erros.

Se após essas verificações o problema persistir, compartilhe os logs de erro que você encontrar para que possamos ajudar de forma mais específica.

Espero ter ajudado e bons estudos!

Localmente o projeto está rodando sem problemas. Tirei um log do container e o problema parece ser um erro com 'ajv keyword formatMinimum'. Pesquisei um pouco e encontrei um erro semelhante no link https://github.com/facebook/docusaurus/issues/6073 dizendo que poderia ser um problema com o gerenciado de pacotes npm, e que ao utilizar o yarn seria possível corrigir. Tentei atualizar o npm para uma nova versão e gerar uma nova build e um novo container a partir dela, porém o erro persiste. Instalei então o yarn, alterei o Dockerfile para utilizar yarn install e gerei uma nova imagem e um novo container, mas continua o problema.

Image com npm atualizado: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeLog: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeImagem utilizando yarn: Insira aqui a descrição dessa imagem para ajudar na acessibilidade Log: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A última atualização do site informou também para adicionar { "ajv": "^8.12.0", "ajv-keywords": "^5.1.0", } em "devDependencies" para funcionar com npm, mas mesmo após essa mudança E com npm atualizado o erro persiste.

solução!

Consegui solucionar. Aparentemente o problema era realmente com o gerenciador de pacotes do npm. Utilizei o comando rm -rf node_modules yarn.lock package-lock.json para limpar as dependencias do projeto e baixar novamente usando yarn e funcionou localmente. Fazendo a build de uma nova imagem, notei que o docker estava utilizando as dependências em cache então utilizei o yarn install --force no Dockerfile para forçar um novo download, e a partir desta nova imagem foi possível fazer o container hospedar a aplicação.

Ainda estou com um erro em que não consigo acessar pelo localhost:3000, mas o acesso pode ser feito por um endereço ip de rede local que o docker fornece ao utilizar docker logs <container_id>.

Agradeço demais o apoio!!!