【问题标题】:Multi stage docker build of a golang application can't find the .env filegolang应用程序的多阶段docker构建找不到.env文件
【发布时间】: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


    【解决方案1】:

    好的,找到了一个有效的脚本。

    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 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 scratch as runtime
    
    WORKDIR /app/keys/
    COPY --from=build /build/keys/* ./
    
    WORKDIR /app
    
    COPY --from=build /dist/main .
    COPY --from=build /build/.env .
    
    CMD [ "./main" ]
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多