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

[Dúvida] ERRO NO ARQUIVO DOCKERFILE

ao dar o comando para construir a imagem, recebi um erro no parte de cópia do arquivo main para o container na pasta app/main.
 => ERROR [app 3/3] COPY ./main /app/main  
 
 Na aula, o professor usa o seguinte trecxho de código: COPY ./main /app/main
 
 No caso, devo declarar a extensão do arquivo main, tipo: COPY ./main.go /app/main, ou existe outra solução para o problema?
8 respostas

Salve manow, dboas? Adiciona seu dockerfile por gentileza :D

Uma coisa que você pode fazer é usar o sync da máquina com o container, ou usar um volume, que irá automaticamente adicionar os arquivos, mas não realiza atualizações assíncronas.

https://stackoverflow.com/questions/18878216/docker-how-to-live-sync-host-folder-with-container-folder

O arquivo que estou usando é o mesmo que o professor disponibilizou. Peguei no link abaixo:

https://github.com/alura-cursos/3983-integracao-continua/archive/refs/heads/main.zip

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Então, fiz o uso do docker-compose up -d aqui pelo terminal do powershell, e funcionou numa boa, mesmo eu não tendo os diretórios, ele criou o que precisava normalmente. Isso sugere que há arquivos corrompidos no seu projeto, ou o docker não tem permissão nos arquivos em ./. Verifica as permissões, e tenta ver os logs do container também, porque esse erro tá muito genérico, ou o docker-compose.yml está num diretório diferente da pasta do projeto.

Vou dar uma olhada aqui, mas na aula ele criou um arquivo Dockerfile para todo o projeto, apontando para cópia no container somente o arquivo executável do projeto.

Esse foi o código que ele criou em aula e inseriu no docker-compose.yml

FROM golang:1.22

EXPOSE 8080

WORKDIR /app

COPY ./main /app/main

CMD [ "./main" ]

Esse é o arquivo do Docker compose depois da alteração que ele fez:

services:
  postgres:
    image: "postgres"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=root
    ports:
      - 5432:5432
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

  app:
    #procurar na mesma pasta em que o Dockercompose está sendo executado irá procurar o arquivo DockerFile
    build: .
    ports:
      - 8080:8080
      #o serviço depende do postgres
    depends_on:
      - postgres
    environment:
      - DB_HOST=postgres
      - DB_USER=root
      - DB_PASSWORD=root
      - DB_NAME=root
      - DB_PORT=5432

A propósito, valeu mesmo aí por ajudar. Muito obrigado!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pesquisando na parte de erros do docker tenho:

failed to compute cache key: failed to calculate checksum of ref 3936483e-3b4e-4ec9-9d59-4c155f337368::9ervmbu1cx3mwa4ueyfgdi6aw: "/main": not found

quando eu coloco a extensão do arquivo main, em teoria ele funciona COPY ./main.go /app/main

solução!

Certo, então, ele não tem uma pasta main quando tu chama o ./main nos arquivos de Dockerfile e docker-compose, o que você possui são arquivos main.go, no caso da cópia de diretório, você pode simplesmente colocar um ponto .. Além disso, no seu CMD você está tentando executar um main, mas não fez a build da aplicação, para isso, use algo como o RUN CGO_ENABLED=0 GOOS=linux go build -o main . para buildar seu app como "main" no diretório atual (WORKDIR).

De qualquer modo, a essência do erro é porque você não tem o diretório "main" mesmo, pode ser que corrigindo isso, já resolva seu problema, ou prossiga para o próximo erro (que acredito ser esse da build da aplicação).