Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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
如何在Go项目中将.env文件传递给docker映像?_Docker_Go_Kubernetes_Environment Variables_Dockerfile - Fatal编程技术网

如何在Go项目中将.env文件传递给docker映像?

如何在Go项目中将.env文件传递给docker映像?,docker,go,kubernetes,environment-variables,dockerfile,Docker,Go,Kubernetes,Environment Variables,Dockerfile,我的围棋项目heriarchy是这样的: 主要功能: func main() { path, _ := os.Getwd() err := godotenv.Load(filepath.Join(path, ".env")) if err != nil { log.Fatal("Error loading .env file") } server.Init() } 这是我的docker文件内容:

我的围棋项目heriarchy是这样的:

主要功能:

func main() {
    path, _ := os.Getwd()
    err := godotenv.Load(filepath.Join(path, ".env"))
    if err != nil {
        log.Fatal("Error loading .env file")
    }
    server.Init()
}
这是我的
docker
文件内容:

FROM golang:alpine AS build-env
LABEL MAINTAINER "Amit Pal <amit.pal@fynchmobility.com>"
ENV GOPATH /go
WORKDIR /go/src
COPY . /go/src/gothamcity
RUN cd /go/src/gothamcity && go build .

FROM alpine
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk*
WORKDIR /app
COPY --from=build-env /go/src/gothamcity/gothamcity /app

EXPOSE 8080

ENTRYPOINT [ "./gothamcity" ]
我得到了一个错误:

2021/01/28 14:34:46加载.env文件时出错

我做错了什么?如何将.env文件传递给docker映像并执行它


还有,不是
COPY/转到/src/gothamcity
将整个项目复制到docker image?

复制/go/src/gothamcity
仅复制.env以生成容器。必须将其显式复制到主容器中,如下所示:

FROM golang:alpine AS build-env
LABEL MAINTAINER "Amit Pal <amit.pal@fynchmobility.com>"
ENV GOPATH /go
WORKDIR /go/src
COPY . /go/src/gothamcity
RUN cd /go/src/gothamcity && go build .

FROM alpine
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk*
WORKDIR /app
COPY --from=build-env /go/src/gothamcity/gothamcity /app
COPY .env /app

EXPOSE 8080

ENTRYPOINT [ "./gothamcity" ]
来自golang:alpine AS build env的


标签维护器“Amit Pal正在工作。

.env
不是一个变量,它是一个文件。您的代码在当前工作目录中查找该文件。确保它在容器工作目录中。@JimB是的,我知道这是一个文件,但我的想法是将所有环境变量从这里复制到docker映像?您可以随意设置环境变量,但代码正在查找特定文件,您需要提供该文件。如果您只想设置环境变量,则不要使用此代码。好的,请理解,当我使用
复制时,它也只是复制
.go
文件/go/src/gothamcity
这一行?它应该复制整个工作目录
copy
copies文件,它不以任何方式特定于
go
。谢谢您的回答。它确实对我有用。为什么
COPY--from=build env/go/src/gothamcity/gothamcity/app
没有复制
.env
文件?因为它只复制应用程序二进制文件
FROM golang:alpine AS build-env
LABEL MAINTAINER "Amit Pal <amit.pal@fynchmobility.com>"
ENV GOPATH /go
WORKDIR /go/src
COPY . /go/src/gothamcity
RUN cd /go/src/gothamcity && go build .

FROM alpine
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk*
WORKDIR /app
COPY --from=build-env /go/src/gothamcity/gothamcity /app
COPY .env /app

EXPOSE 8080

ENTRYPOINT [ "./gothamcity" ]