第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Docker 構(gòu)建:“go: 在當前目錄或任何父目錄中找不到 go.mod 文件”

Docker 構(gòu)建:“go: 在當前目錄或任何父目錄中找不到 go.mod 文件”

Go
Qyouu 2022-12-19 19:21:59
我正在嘗試構(gòu)建我的 Golang 應(yīng)用程序的 Dockerfile,其中包括 delve 調(diào)試器 - 我想在 Docker 容器中調(diào)試我的 Golang 應(yīng)用程序。當我嘗試構(gòu)建我的 Docker 時,我總是出現(xiàn)以下錯誤:Step 5/9 : RUN go build -gcflags "all=-N -l" -o ./feedme ---> Running in a0579ec8a85cgo: go.mod file not found in current directory or any parent directory; see 'go help modules'命令 go build 在我的本地文件夾上運行良好(請參閱下面的樹命令)go build -gcflags "all=-N -l" -o ./feedme這是我的文件夾結(jié)構(gòu)和文件:tree.├── Dockerfile├── Makefile├── docker-compose.yml└── parsedata-xml-fp.go0 directories, 4 files單個應(yīng)用程序文件 parsedata-xml-fp.go(我將忽略它,因為我認為錯誤與它無關(guān))我的文件:FROM golang:1.17 AS buildWORKDIR /COPY . .RUN go install github.com/go-delve/delve/cmd/dlv@latestRUN go build -gcflags "all=-N -l" -o ./feedmeEXPOSE 8000 2345 COPY --from=build /go/bin/dlv /dlvCOPY --from=build /feedme /feedmeCMD ["/dlv", "--listen=:2345", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "/feedme"]知道為什么會發(fā)生此錯誤,我該如何解決?我搜索了它并嘗試設(shè)置一些環(huán)境變量:1) RUN GO111MODULE=off/on2) RUN CGO_ENABLED=0好像它們都不起作用
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經(jīng)驗 獲得超2個贊

我閱讀了官方 Docker 文檔:docs.docker.com/language/golang/以及多階段構(gòu)建博客


這是我想出的解決方案,我可以在本地啟動我的 Go 應(yīng)用程序容器


我的 Dockerfile:


FROM golang:1.17 AS build


WORKDIR /

COPY . .


RUN go mod init feedme

RUN go mod tidy


RUN go install github.com/go-delve/delve/cmd/dlv@latest

RUN go build -gcflags="all=-N -l" -o /feedme

RUN echo $(ls /go/bin)


FROM gcr.io/distroless/base-debian10

WORKDIR /


EXPOSE 2345 


COPY --from=build /go/bin/dlv /dlv

COPY --from=build /feedme ~/feedme

#ENTRYPOINT [ "/dlv" ]

CMD ["/dlv", "--listen=:2345", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "~/feedme"]

我使用以下方式啟動我的容器:


docker run -p 2345:2345 <docker image ID>

然后我試著卷曲它,它確實有反應(yīng):


curl http://localhost:2345

[編輯]根據(jù) TheFool 的建議,我直接在我的容器中使用了 go.mod 和 go.sum 的本地副本。將它從我的本地工作區(qū)復(fù)制到容器,(而不是在容器中生成 go.mod)以避免將來出現(xiàn)任何意外:


這是Dockerfile的改進版本


FROM golang:1.17 AS build


WORKDIR /

COPY go/app/parsedata-xml-fp.go .

COPY go.mod .   # just copy local go.mod

COPY go.sum .


RUN go install github.com/go-delve/delve/cmd/dlv@latest

RUN go build -gcflags="all=-N -l" -o /feedme

RUN echo $(ls /go/bin)


FROM gcr.io/distroless/base-debian10

WORKDIR /


EXPOSE 2345 


COPY --from=build /go/bin/dlv /dlv

COPY --from=build /feedme ~/feedme

#ENTRYPOINT [ "/dlv" ]

CMD ["/dlv", "--listen=:2345", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "~/feedme"]



查看完整回答
反對 回復(fù) 2022-12-19
  • 1 回答
  • 0 關(guān)注
  • 535 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號