【发布时间】:2021-05-20 00:33:07
【问题描述】:
我正在尝试为一个让我发疯的 golang 应用程序调试多阶段 docker 构建。
docker文件如下
FROM golang:1.15-alpine as build
RUN apk add --no-cache git
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
WORKDIR /build
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build -o main .
WORKDIR /dist
RUN cp /build/main .
RUN cp /build/.env .
WORKDIR /dist/keys
RUN cp /build/keys/* .
FROM alpine as runtime
COPY --from=build /dist/main /app/
COPY --from=build /build/keys/* /app/keys/
COPY --from=build /build/.env /app/
CMD [ "/app/main" ]
如果我构建它并使用 -it /bin/bash 运行它,我可以看到应用程序在正确的位置,.env 文件在那里并且密钥也在那里。
事实上,我可以愉快地交互式地运行 ./main 应用程序。
但是..当我尝试去做时
- docker run -it --rm --hostname dld --name dld dld 15:57:42
2021/02/17 05:57:47 Error loading .env file
明显找不到.env文件。
我试图从头开始构建第二阶段,但我无法以交互方式执行任何操作,因此我会尝试使用 alpine 进行调试。
为了得到我运行的 shell
docker run -it --rm --hostname dld --name dld dld /bin/sh
【问题讨论】:
标签: docker-build docker-run multistage