Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker生成副本失败_Docker_Dockerfile - Fatal编程技术网

Docker生成副本失败

Docker生成副本失败,docker,dockerfile,Docker,Dockerfile,我使用的是来自golang:alpine的build docker图像 我的目的只是将执行的二进制文件复制到一个新的暂存映像 下面是我的Dockerfile: ############################ # STEP 1 build executable binary ############################ FROM golang@sha256:d481168873b7516b9f34d322615d589fafb166ff5fd57d93e96f64787a58

我使用的是来自golang:alpine的build docker图像

我的目的只是将执行的二进制文件复制到一个新的暂存映像

下面是我的Dockerfile:

############################
# STEP 1 build executable binary
############################
FROM golang@sha256:d481168873b7516b9f34d322615d589fafb166ff5fd57d93e96f64787a58887c AS builder

RUN apk update && apk add --no-cache git tzdata ca-certificates && update-ca-certificates

ADD . $GOPATH/src/piggybank2go
WORKDIR $GOPATH/src/piggybank2go
COPY . .

# Fetch dependencies.
RUN go get -u github.com/golang/dep/cmd/dep
RUN dep ensure -v

# Build executeable binary
RUN GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o $GOPATH/bin/piggybank2go
# RUN go build -o /go/bin/piggybank2go

############################
# STEP 2 build a small image
############################
FROM scratch

# Copy our static executable
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder $GOPATH/bin/piggybank2go $GOPATH/bin/piggybank2go

# Port on which the service will be exposed.
EXPOSE 8081

ENTRYPOINT ["$GOPATH/bin/piggybank2go"]
但我有一个错误:

Step 12/14 : COPY --from=builder $GOPATH/bin/piggybank2go $GOPATH/bin/piggybank2go
COPY failed: stat /var/lib/docker/overlay2/b37bbe725b51ba50e3082d162e75d4cdee368499e26887c6921486415c089920/merged/bin/piggybank2go: no such file or directory

我认为问题在于环境变量
$GOPATH
只存在于golang图像中,而不存在于scratch图像中。因此,请尝试将
COPY
-行更改为:

COPY --from=builder /go/bin/piggybank2go /go/bin/piggybank2go
COPY --from=builder /go/bin/piggybank2go /go/bin/piggybank2go

第一阶段中的环境变量在第二阶段中不可用。因此,无法在第二阶段正确解析“$GOPATH”,因此出现错误

在第二阶段中,您应该确切地知道要复制的内容和位置: