我已经安装了Fabric的所有先决条件。
我已将Fabric放在/usr/local/go/src/github.com/hyperledger/fabric
中,并将GOPATH添加到系统的PATH变量中。
运行make docker
命令时,出现以下错误:
Building .build/docker/bin/peer
can't load package: package github.com/hyperledger/fabric/peer: cannot find package "github.com/hyperledger/fabric/peer" in any of:
/opt/go/src/github.com/hyperledger/fabric/peer (from $GOROOT)
/opt/gopath/src/github.com/hyperledger/fabric/peer (from $GOPATH)
make: *** [.build/docker/bin/peer] Error 1
我也同样通过了Makefile规则:
# We (re)build a package within a docker context but persist the $GOPATH/pkg
# directory so that subsequent builds are faster
$(BUILD_DIR)/docker/bin/%: $(PROJECT_FILES)
$(eval TARGET = ${patsubst $(BUILD_DIR)/docker/bin/%,%,${@}})
@echo "Building $@"
@mkdir -p $(BUILD_DIR)/docker/bin $(BUILD_DIR)/docker/$(TARGET)/pkg
@$(DRUN) \
-v $(abspath $(BUILD_DIR)/docker/bin):/opt/gopath/bin \
-v $(abspath $(BUILD_DIR)/docker/$(TARGET)/pkg):/opt/gopath/pkg \
$(BASE_DOCKER_NS)/fabric-baseimage:$(BASE_DOCKER_TAG) \
go install -tags "$(GO_TAGS)" -ldflags "$(DOCKER_GO_LDFLAGS)" $(pkgmap.$(@F))
@touch $@
错误似乎与$(BASE_DOCKER_NS)/fabric-baseimage:$(BASE_DOCKER_TAG) \
行有关。我试图将$(BASE_DOCKER_NS)替换为绝对路径,即/usr/local/go/src/github.com/hyperledger
。再次给出错误:
docker:无效的参考格式。
答案 0 :(得分:0)
该问题很可能是/usr/local/go
与Docker不共享的。假设您正在使用Docker for Mac,可以通过右键单击状态栏中的Docker图标并选择Preferences
,然后选择File Sharing
选项卡来进行检查。如果/usr/local/go
不在列表中,则需要添加。如果您使用的是Docker Toolbox,则需要通过VirtualBox GUI添加共享文件夹。
如果为Fabric 1.4及更早版本运行make docker
,则构建过程涉及多个阶段。第一阶段涉及在Docker容器中构建二进制文件并将当前目录作为卷挂载。这是您得到的错误,因为主机路径未与Docker共享。
如果您在master分支上运行make docker
,您将不会遇到此问题,因为master会使用多阶段Docker构建。