我正在尝试从 dockerfile
和 docker-compose
文件运行容器,如下所示 -
docker-compose.yml
build:
context: .
dockerfile: docker/Dockerfile
target: go-container
entrypoint: bash -c "./main"
Dockerfile
看起来像这样 -
ARG GO_VERSION=1.17
FROM golang:$GO_VERSION as go-container
ENV GOPATH /gopath
ENV PATH $GOPATH/bin:$PATH
WORKDIR /gopath/src/project
ADD go.mod go.sum ./
RUN go mod download -x
RUN go build -o main cmd/main.go
FROM scratch as another_container
COPY --from=go-container /gopath/src/project/main .
ENTRYPOINT ["./main"]
在运行docker-compose
时,我收到这样的错误 -
bash: line 1: ./main: No such file or directory
ERROR: 127
这里发生了什么?我不知道如何调试它,因此感谢任何帮助!
最佳答案
FROM scratch as another_container
您正在使用 FROM 语句,该语句将当前容器替换为基于镜像的新容器。在这种情况下,您将从头开始
,这是一个里面什么也没有的容器。
由于您没有使用 COPY --from
来复制上一阶段的编译文件,因此文件 ./main
丢失,因此您的应用程序将无法运行不工作。
参见here多阶段 Go 构建示例。
关于docker - 重击 : No such file or directory when running a dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73391394/