我正在try 为我的Go项目构建一个Docker容器,但我一直遇到以下错误:
=> ERROR [backend-builder 5/5] RUN --mount=type=cache,mode=0777,target=/go/pkg/mod \
--mount=type=cache,mode=0777,target=/.cache/go-build \
CGO_ENABLED=0 GOOS=linux go build -o serve ./backend/cmd/main.go: \
#17 0.343 backend/cmd/main.go:10:2: no required module provides package \
github.com/LarsDepuydt/peno-entrepreneurship-3d-oclusion/backend/cmd/serve; \
to add it: \
#17 0.343 go get github.com/LarsDepuydt/peno-entrepreneurship-3d-oclusion/backend/cmd/serve \
------
executor failed running [/bin/sh -c CGO_ENABLED=0 GOOS=linux go build -o serve ./backend/cmd/main.go]: exit code: 1
我怀疑这个错误是因为我的main.go文件从我的项目中导入了一个名为SERVE的本地包.
这是我的项目 struct :
peno-entrepreneurship-3d-oclusion/
│
├── backend/
│ ├── cmd/
│ │ ├── main.go
│ │ └── serve/
│ │ └── serve.go
│ ├── go.mod
│ └── go.sum
│
├── Dockerfile
│
└── ... (other frontend files and directories)
这是我的IMPORT语句.转到:
import (
"database/sql"
"fmt"
"log"
"net/http"
"os"
"github.com/LarsDepuydt/peno-entrepreneurship-3d-oclusion/backend/cmd/serve"
)
这是我的 docker 文件:
################################
# Build backend
################################
FROM dev AS backend-builder
# Change the WORKDIR in the backend-builder stage
WORKDIR /usr/src/app
# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change
COPY ./backend/go.mod ./backend/go.sum ./
RUN --mount=type=cache,mode=0777,target=/go/pkg/mod go mod download
#RUN go get github.com/LarsDepuydt/peno-entrepreneurship-3d-oclusion/backend/cmd/serve
COPY . .
# Use native go packages (CGO_ENABLED)
RUN --mount=type=cache,mode=0777,target=/go/pkg/mod \
--mount=type=cache,mode=0777,target=/.cache/go-build \
CGO_ENABLED=0 GOOS=linux go build -o serve ./backend/cmd/main.go
有人能帮我解释一下这里出了什么问题吗?我已经try 了很多更改路径的方法,但都无法绕过这个错误.
在main.go中,我try 了这个:"./serve"
,而不是当前的导入.
我还try 了许多关于WORKDIR和docker文件中的路径的方法.但我一直收到相同的错误,似乎无法修复错误.