在MacOS的Hyperledger Fabric中运行make时出错

时间:2019-03-10 07:40:45

标签: docker hyperledger-fabric hyperledger

我已经安装了Fabric的所有先决条件。

  • OS:Mac OS X EI Capitan
  • Docker版本18.03.0-ce,内部版本0520e24
  • docker-compose版本1.20.1,内部版本5d8c71b
  • go版本go1.10.3 darwin / amd64
  • GOPATH =“ / usr / local / go”
  • GOROOT =“ / usr / local / go”

我已将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:无效的参考格式。

1 个答案:

答案 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构建。