从头开始找不到多阶段构建 exec go 文件

我是 Docker 的新手,我有一些菜鸟问题。我已经按照本教程改进了 Docker 文件。单个构建工作正常,但是当我使用scratch图像时多阶段失败。


Docker 文件是:


# syntax=docker/dockerfile:1


##

## STEP 1 - BUILD

##


# specify the base image to  be used for the application, alpine or ubuntu

FROM golang:1.18-alpine AS build


# None root user

# RUN addgroup -S qcheckgroup && adduser -S qcheck -G qcheckgroup


# USER qcheck


# create a working directory inside the image

ENV GO111MODULE=on

WORKDIR /app


# copy Go modules and dependencies to image

COPY . .


# download Go modules and dependencies

# RUN go mod download


# compile application

RUN go build .



##

## STEP 2 - DEPLOY

##

FROM scratch


WORKDIR /


FROM scratch


WORKDIR /


COPY --from=build app/query_check_span /


EXPOSE 8080


ENTRYPOINT [ "/query_check_span" ]

构建过程工作正常docker build -t qcheck:multi -f .\Dockerfile.multi .,但是当我尝试运行容器时docker run qcheck:multi出现以下错误:exec /query_check_span: no such file or directory。


看起来问题是scratch image无法执行编译好的go程序。我确认当我将图像更改apline为例如。


你知道我做错了什么吗?我怎样才能使用临时图像运行容器?


三国纷争
浏览 70回答 1
1回答

沧海一幻觉

在您的构建阶段,您应该RUN go build -o ./query_check_span代替RUN go build .. 该命令将输出名称为query_check_span.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go