From b7bf24b7e4889830368d6357dc58aabc9c32b028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Wed, 26 Apr 2023 20:17:16 +0200 Subject: [PATCH] make: generalize building of Docker image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way we can easily build an image for `spiff-workflow` for example: ``` make docker-image BUILD_TARGET=spiff-workflow DOCKER_IMAGE_NAME=statusteam/spiff-workflow ``` Signed-off-by: Jakub SokoĊ‚owski --- Makefile | 2 ++ _assets/build/Dockerfile | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4a5d842e8..5e4eb06c8 100644 --- a/Makefile +++ b/Makefile @@ -180,11 +180,13 @@ endif @echo "Shared library built:" @ls -la build/bin/libstatus.* +docker-image: BUILD_TARGET ?= statusd docker-image: ##@docker Build docker image (use DOCKER_IMAGE_NAME to set the image name) @echo "Building docker image..." docker build --file _assets/build/Dockerfile . \ --build-arg "build_tags=$(BUILD_TAGS)" \ --build-arg "build_flags=$(BUILD_FLAGS)" \ + --build-arg "build_target=$(BUILD_TARGET)" \ --label "commit=$(GIT_COMMIT)" \ --label "author=$(AUTHOR)" \ -t $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) \ diff --git a/_assets/build/Dockerfile b/_assets/build/Dockerfile index c9fee1d6a..cd1da725f 100644 --- a/_assets/build/Dockerfile +++ b/_assets/build/Dockerfile @@ -5,15 +5,18 @@ RUN apk add --no-cache make gcc g++ musl-dev linux-headers ARG build_tags ARG build_flags +ARG build_target=statusgo RUN mkdir -p /go/src/github.com/status-im/status-go WORKDIR /go/src/github.com/status-im/status-go ADD . . -RUN make statusgo BUILD_TAGS="$build_tags" BUILD_FLAGS="$build_flags" +RUN make $build_target BUILD_TAGS="$build_tags" BUILD_FLAGS="$build_flags" # Copy the binary to the second image FROM alpine:latest +ARG build_target=statusgo + LABEL maintainer="support@status.im" LABEL source="https://github.com/status-im/status-go" LABEL description="status-go is an underlying part of Status - a browser, messenger, and gateway to a decentralized world." @@ -21,11 +24,13 @@ LABEL description="status-go is an underlying part of Status - a browser, messen RUN apk add --no-cache ca-certificates bash libgcc libstdc++ RUN mkdir -p /static/keys -COPY --from=builder /go/src/github.com/status-im/status-go/build/bin/statusd /usr/local/bin/ +COPY --from=builder /go/src/github.com/status-im/status-go/build/bin/$build_target /usr/local/bin/ COPY --from=builder /go/src/github.com/status-im/status-go/static/keys/* /static/keys/ +RUN ln -s /usr/local/bin/$build_target /usr/local/bin/entrypoint + # 30304 is used for Discovery v5 EXPOSE 8080 8545 30303 30303/udp 30304/udp -ENTRYPOINT ["/usr/local/bin/statusd"] +ENTRYPOINT ["/usr/local/bin/entrypoint"] CMD ["--help"]