给定的是一个非常简单的Dockerfile
,在Windows 11上构建和运行。dockerfile有两个阶段,首先是构建阶段,然后是实际的可部署容器。
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp . # build /app/myapp
FROM alpine:3.14
RUN apk add --no-cache ca-certificates
COPY --from=builder /app/myapp /myapp
EXPOSE 8080
ENTRYPOINT ["/myapp"]
运行容器失败,并出现以下错误:
/myapp: not found
我检查了第一阶段,它生成了一个名为myapp
的可执行文件,其中包含5984
字节。我可以在那里运行和执行它。
我还检查了第二阶段,我可以验证/myapp
存在5984
和正确的执行位。通过sh
处于检查模式,我无法执行/myapp
,因为它给了我同样的错误。任何想法可能导致这一点?
1条答案
按热度按时间kkbh8khc1#
可能有几个原因导致此问题,请尝试以下解决方案之一:
1.特别是在Windows 11中,运行Alpine Linux映像(
alpine:3.14
)本身可能是问题所在。请尝试使用其他映像。1.尝试在
ENTRYPOINT ["/myapp"]
之前添加chmod +x /myapp
,它可以帮助您检查/myapp
是否在容器中可执行。