为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
qq_笑_17 2022-08-01 18:51:20
我的Go项目heriarchy是这样的:主要功能:func main() {    path, _ := os.Getwd()    err := godotenv.Load(filepath.Join(path, ".env"))    if err != nil {        log.Fatal("Error loading .env file")    }    server.Init()}这是我的文件内容:dockerFROM golang:alpine AS build-envLABEL MAINTAINER "Amit Pal <amit.pal@fynchmobility.com>"ENV GOPATH /goWORKDIR /go/srcCOPY . /go/src/gothamcityRUN cd /go/src/gothamcity && go build .FROM alpineRUN apk update && apk add ca-certificates && rm -rf /var/cache/apk*WORKDIR /appCOPY --from=build-env /go/src/gothamcity/gothamcity /appEXPOSE 8080ENTRYPOINT [ "./gothamcity" ]我运行以下命令来构建并运行 docker 映像:docker build -t gcr.io/${PROJECT_ID}/gothamcity:v1.0 .docker run -ti gcr.io/miles-ee458/gothamcity:v1.0   我得到错误:2021/01/28 14:34:46 Error loading .env file我在这里做错了什么?如何将 .env 文件传递给 docker 映像并执行它?另外,不是将整个项目复制到 Docker 映像吗?COPY . /go/src/gothamcity
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

COPY . /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" ]

原因是,当你说“从高山”时,这变成了一个全新的空白容器。这就是多阶段构建的工作方式。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号