diff --git a/Makefile b/Makefile index 818634cf426..87f70d4ace3 100644 --- a/Makefile +++ b/Makefile @@ -221,7 +221,6 @@ tools: $(TOOLS_EXES) $(RELEASE_EXES): %: $(BUILD_DIR)/bin/% $(BUILD_DIR)/bin/%: GO_LDFLAGS = $(METADATA_VAR:%=-X $(PKGNAME)/common/metadata.%) -$(BUILD_DIR)/bin/%: GO_LDFLAGS += -w -extldflags '-static' $(BUILD_DIR)/bin/%: @echo "Building $@" @mkdir -p $(@D) @@ -247,6 +246,8 @@ $(BUILD_DIR)/images/%/$(DUMMY): --build-arg GO_VER=$(GO_VER) \ --build-arg ALPINE_VER=$(ALPINE_VER) \ --build-arg FABRIC_VER=$(FABRIC_VER) \ + --build-arg TARGETARCH=$(ARCH) \ + --build-arg TARGETOS=linux \ $(BUILD_ARGS) \ -t $(DOCKER_NS)/fabric-$* ./$(BUILD_CONTEXT) @touch $@ @@ -261,6 +262,7 @@ release-all: check-go-version $(RELEASE_PLATFORMS:%=release/%) .PHONY: $(RELEASE_PLATFORMS:%=release/%) $(RELEASE_PLATFORMS:%=release/%): GO_LDFLAGS = $(METADATA_VAR:%=-X $(PKGNAME)/common/metadata.%) +$(RELEASE_PLATFORMS:%=release/%): GO_LDFLAGS += -w -extldflags '-static' $(RELEASE_PLATFORMS:%=release/%): release/%: $(foreach exe,$(RELEASE_EXES),release/%/bin/$(exe)) $(RELEASE_PLATFORMS:%=release/%): release/%: ccaasbuilder/% diff --git a/images/orderer/Dockerfile b/images/orderer/Dockerfile index b483f5567ea..549507bcc8e 100644 --- a/images/orderer/Dockerfile +++ b/images/orderer/Dockerfile @@ -27,6 +27,11 @@ FROM golang as orderer ARG GO_TAGS ARG FABRIC_VER ENV FABRIC_VER ${FABRIC_VER} + +# Disable cgo when building in the container. This will create a static binary, which can be +# copied and run in the base alpine container without the libc/musl runtime. +ENV CGO_ENABLED 0 + RUN make orderer GO_TAGS=${GO_TAGS} FROM base diff --git a/images/peer/Dockerfile b/images/peer/Dockerfile index f4f699210ab..a93b6f4ab24 100644 --- a/images/peer/Dockerfile +++ b/images/peer/Dockerfile @@ -26,6 +26,11 @@ FROM golang as peer ARG GO_TAGS ARG FABRIC_VER ENV FABRIC_VER ${FABRIC_VER} + +# Disable cgo when building in the container. This will create a static binary, which can be +# copied and run in the base alpine container without the libc/musl runtime. +ENV CGO_ENABLED 0 + RUN make peer GO_TAGS=${GO_TAGS} RUN make ccaasbuilder diff --git a/images/tools/Dockerfile b/images/tools/Dockerfile index 92e9a14ece5..93518837bdf 100644 --- a/images/tools/Dockerfile +++ b/images/tools/Dockerfile @@ -21,6 +21,11 @@ FROM golang as tools ARG GO_TAGS ARG FABRIC_VER ENV FABRIC_VER ${FABRIC_VER} + +# Disable cgo when building in the container. This will create a static binary, which can be +# copied and run in the base alpine container without the libc/musl runtime. +ENV CGO_ENABLED 0 + RUN make tools GO_TAGS=${GO_TAGS} FROM golang:${GO_VER}-alpine${ALPINE_VER}