Обратите внимание, что я новичок в разработке Golang и Docker. Я уже спрашивал об этом в другом месте и пытался прочитать документацию, но не могу найти никакого решения.
Проблема и код
У меня есть два репозитория /home/experience/keep-ecdsa
и /home/experience/keep-core
, которые я раздвоил из этот проект и клонирован локально.
Я пытаюсь создать образ docker для keep-ecdsa
локально. Вот ссылка на мое форк-репо .
Есть некоторые 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 начинается следующим образом (щелкните здесь, чтобы увидеть полный файл) :
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 .
я получаю сообщение об ошибке ниже, которое возникает на этапе RUN go mod download
из DOCKERFILE
.
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
То, что я пытался, и ведущего
Я пробовал to:
- Измените мой
GOPATH
в DOCKERFILE на различные абсолютные локальные пути fs - Сделайте мой
APPDIR
в DOCKERFILE указателем на мой абсолютный локальный путь /home/experience/keep-ecdsa
- Измените путь в операторе
replace ( )
в go.mod
на различные пути (абсолютный локальный, относительно GOPATH
, и т. Д. c
Кто-то дал мне эту подсказку:
вы находитесь внутри golang:1.13.8-alpine3.10
базового образа, поэтому внутри него нет /home/experience/keep-core
, так как это только на вашем локальном fs
Но я все еще понятия не имею как добиться того, что я хочу. Возможно, заменить оператор FROM ... AS runtine
в DOCKERFILE каким-нибудь локальным базовым образом? Но как мне найти такое подходящее базовое изображение и не буду он изменяет остальные инструкции DOCKERFILE?
Имейте в виду, что я собираюсь внести локальные изменения в keep-core
зависимости и мне нужно будет их протестировать, поэтому решение, которое будет состоять из replace (github.com/mygithubprofile/keep-core)
неудовлетворительно.
Заранее благодарю