如何在Go项目中将.env文件传递给docker映像?
我的围棋项目heriarchy是这样的: 主要功能:如何在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文件内容:
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" ]