我的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 <[email protected]>"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 <[email protected]>"
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" ]
原因是,當你說“從高山”時,這變成了一個全新的空白容器。這就是多階段構建的工作方式。
- 1 回答
- 0 關注
- 154 瀏覽
添加回答
舉報
0/150
提交
取消