【发布时间】:2020-06-19 09:05:36
【问题描述】:
请注意,我是 Golang 和 Docker 开发的新手。我已经在别处问过这个问题并尝试阅读文档但找不到任何解决方案。
问题及代码
我有两个 repos /home/experience/keep-ecdsa 和 /home/experience/keep-core,我从 this project 分叉并在本地克隆。
我正在尝试在本地为 keep-ecdsa 构建 docker 映像。这是我的forked repo 的链接。
有一些 keep-core 依赖项,我想指向我本地的 keep-core 存储库。因此,我将go.mod 更改为:
module github.com/keep-network/keep-ecdsa
go 1.13
replace (
//unrelated stuff...
github.com/keep-network/keep-core => /home/experience/keep-core
)
require (
//unrelated stuff...
github.com/keep-network/keep-core v1.1.3
)
DOCKERFILE 以 (click here to see the full file) 开头:
FROM golang:1.13.8-alpine3.10 AS runtime
ENV APP_NAME=keep-ecdsa \
BIN_PATH=/usr/local/bin
FROM runtime AS gobuild
ENV GOPATH=/go \
GOBIN=/go/bin \
APP_NAME=keep-ecdsa \
APP_DIR=/go/src/github.com/keep-network/keep-ecdsa \
BIN_PATH=/usr/local/bin \
# GO111MODULE required to support go modules
GO111MODULE=on
//rest of the linked DOCKERFILE
运行docker build . 时,我收到以下错误,该错误发生在DOCKERFILE 的RUN go mod download 步骤中。
Step 13/27 : RUN go mod download
--> Running in 88839fc42d4e
go: github.com/keep-network/keep-core@v1.1.3: parsing /home/experience/keep-core/go.mod: open /home/experience/keep-core/go.mod: no such file or directory
The command '/bin/sh -c go mod download' returned a non-zero code: 1
我的尝试和领先
我尝试过:
- 将我在 DOCKERFILE 中的
GOPATH更改为各种绝对本地 fs 路径 - 让我在 DOCKERFILE 中的
APPDIR指向我的绝对本地路径/home/experience/keep-ecdsa - 将
go.mod的replace ( )语句中的路径更改为各种路径(绝对本地,相对于GOPATH等
有人给了我这条线索:
您位于
golang:1.13.8-alpine3.10基本映像中 所以里面没有/home/experience/keep-core因为那只在你本地的 fs 上
但我仍然不知道如何实现我想要的。也许用一些本地基础图像替换 DOCKERFILE 中的FROM ... AS runtine 语句?但是我如何找到这样相关的基础图像,它不会改变其余的 DOCKERFILE 指令吗?
请记住,我将对keep-coredependencies 进行本地更改并且需要对其进行测试,因此包含replace (github.com/mygithubprofile/keep-core) 的解决方案并不令人满意。
提前谢谢你。
【问题讨论】:
-
不要发布有文字的图片。很难阅读。复制错误并粘贴到
-
@FananDala 现在修复这个问题,抱歉
-
对不起@FananDala 我们同时编辑了,因为当我点击“保存编辑”时它自动拒绝了你的编辑。感谢您指出这一点。
-
你能包含完整的案卷文件吗?我想看看
RUN go mod download之前还运行了哪些其他Docker指令 -
当然@FananDala,这里是完整 docker 文件的链接:github.com/jeremyid/keep-ecdsa/blob/master/Dockerfile 我会尽量让我在链接到它的问题中更清楚
标签: docker go dockerfile local