我在 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 .
当前目录是什么目录很重要。
- 1 回答
- 0 关注
- 268 浏览
添加回答
举报
0/150
提交
取消