Не могу сбилдить приложение в контейнер написанное на Golang. Не видит скомпилированный файл main

Я новичок в docker и пытаюсь сбилдить приложение написанное на golang в контейнер, но по непонятным мне причинам в конце сборки возникаем ошибка: "Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./main": stat ./main: no such file or directory: unknown" - я проверял структуру файлов в контейнере и там он есть: docker run -it messanger_server ls -l /app результат выполнения команды

Также проверял права на выполнение chmod +x ./main.

Пример Dockerfile:

FROM golang:1.22-alpine

RUN apk add --no-cache git

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .

RUN go build -o main ./cmd/server/

CMD ["./main"]

В /cmd/server/ находится main.go

Пример куска кода Docker-compose.yml:

version: '3.8'

services:
  server:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - .:/app
    depends_on:
      - redis
      - postgres

Подскажите в чём может быть проблема?


Ответы (1 шт):

Автор решения: Twice

Проблема решена.

Если вдруг кто-то столкнётся с похожим: проблема была из-за наличия блока volumes в файле docker-compose.yml. Он перезаписывает всё в образе содержимым с хоста, в том числе скомпилированный бинарный файл. Чтобы решить проблему, нужно удалить этот блок.

→ Ссылка