亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

當我使用 go with docker compose 時出現“No Go files in...”

當我使用 go with docker compose 時出現“No Go files in...”

Go
慕田峪9158850 2023-05-22 17:17:38
我在 Ubuntu 16.04 上安裝了 Go。這是我的 GOPATH=/home/{username}/work。我在 /home/{username}/work/src 中創建了一個項目。這是我的項目文件夾層次結構。project-name   services       configuration           api               main.go           Dockerfile       bff           api               main.go           Dockerfile   docker-compose.yml   favicon.ico   README.md我可以使用我的 dockerfile 構建和運行,但我無法使用 docker-compose 構建和運行。我找不到任何解決方案。配置服務dockerfile:FROM golang:1.11.1-alpine3.8 as builderRUN apk update && apk add git && go get gopkg.in/natefinch/lumberjack.v2RUN mkdir -p /go/src/project-name/services/configurationRUN CGO_ENABLED=0RUN GOOS=linuxADD . /go/src/project-name/services/configurationENV GOPATH /goWORKDIR /go/src/project-name/services/configuration/apiRUN go getRUN go buildFROM alpineRUN apk updateRUN apk add curlRUN mkdir -p /appCOPY --from=builder /go/src/project-name/services/configuration/api/ /app/RUN chmod +x /app/apiWORKDIR /appEXPOSE 5001ENTRYPOINT ["/app/api"]它適用于 dockerfile。這是我的 docker-compose 文件:version: '3.4'services:   bff:      image: project-name/bff:${TAG:-latest}      build:           context: .           dockerfile: services/bff/Dockerfile      ports:          - "5000:5000"      container_name: bff       depends_on:         - configuration   configuration:       image: project-name/configuration:${TAG:-latest}       build:            context: .            dockerfile: services/configuration/Dockerfile           ports:            - "5001:5001"       container_name: configuration它沒有用。運行“run go get”命令時,報錯,報錯為: can't load package: package project-name/services/configuration/api: no Go files in /go/src/project-name/services/configuration/api ERROR: Service 'configuration' failed to build: The command '/bin/sh -c go get' returned a non-zero code: 1
查看完整描述

1 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

在你的 Dockerfile 中,你說

ADD . /go/src/project-name/services/configuration

它期望主機上的構建上下文目錄包含源文件。但是你的docker-compose.yml文件說

build:
    context: .
    dockerfile: services/configuration/Dockerfile

其中上下文目錄是源代碼控制樹的根目錄,而不是您要構建的特定 Go 源代碼目錄。如果你把這個改成

build:    context: services/configuration
    # Default value of "dockerfile: Dockerfile" will be right

它可能會更好地工作。

在普通的 Docker 命令中,您當前的docker-compose.yml文件相當于

cd $GOPATH/src/project-name
docker build -f services/configuration/Dockerfile .

但你可能真的在跑步

cd $GOPATH/src/project-name/services/configuration
docker build .

當前目錄是什么目錄很重要。


查看完整回答
反對 回復 2023-05-22
  • 1 回答
  • 0 關注
  • 321 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號