Browse Source

build(docker): update docker build

zhanghongtong 4 years ago
parent
commit
90a2ebfb02
3 changed files with 31 additions and 8 deletions
  1. 13 3
      Makefile
  2. 17 0
      build
  3. 1 5
      deploy/docker/Dockerfile

+ 13 - 3
Makefile

@@ -3,9 +3,12 @@ REBAR_VERSION = 3.14.3-emqx-8
 REBAR = $(CURDIR)/rebar3
 REBAR = $(CURDIR)/rebar3
 BUILD = $(CURDIR)/build
 BUILD = $(CURDIR)/build
 SCRIPTS = $(CURDIR)/scripts
 SCRIPTS = $(CURDIR)/scripts
+export EMQX_DEFAULT_BUILDER = emqx/build-env:erl23.2.7.2-emqx-3-alpine
+export EMQX_DEFAULT_RUNNER = alpine:3.12
 export PKG_VSN ?= $(shell $(CURDIR)/pkg-vsn.sh)
 export PKG_VSN ?= $(shell $(CURDIR)/pkg-vsn.sh)
 export EMQX_DESC ?= EMQ X
 export EMQX_DESC ?= EMQ X
 export EMQX_CE_DASHBOARD_VERSION ?= v4.3.3
 export EMQX_CE_DASHBOARD_VERSION ?= v4.3.3
+export DOCKERFILE := deploy/docker/Dockerfile
 ifeq ($(OS),Windows_NT)
 ifeq ($(OS),Windows_NT)
 	export REBAR_COLOR=none
 	export REBAR_COLOR=none
 endif
 endif
@@ -148,11 +151,18 @@ $1: $1-rel
 endef
 endef
 $(foreach pt,$(PKG_PROFILES),$(eval $(call gen-pkg-target,$(pt))))
 $(foreach pt,$(PKG_PROFILES),$(eval $(call gen-pkg-target,$(pt))))
 
 
+## docker target is to create docker instructions
+.PHONY: $(REL_PROFILES:%=%-docker)
+define gen-docker-target
+$1-docker: $(COMMON_DEPS)
+	@$(BUILD) $1 docker
+endef
+ALL_ZIPS = $(REL_PROFILES)
+$(foreach zt,$(ALL_ZIPS),$(eval $(call gen-docker-target,$(zt))))
+
 .PHONY: run
 .PHONY: run
 run: $(PROFILE) quickrun
 run: $(PROFILE) quickrun
 
 
 .PHONY: quickrun
 .PHONY: quickrun
 quickrun:
 quickrun:
-	./_build/$(PROFILE)/rel/emqx/bin/emqx console
-
-include docker.mk
+	./_build/$(PROFILE)/rel/emqx/bin/emqx console

+ 17 - 0
build

@@ -128,6 +128,19 @@ make_zip() {
     (cd "${tard}" && zip -qr - emqx) > "${zipball}"
     (cd "${tard}" && zip -qr - emqx) > "${zipball}"
 }
 }
 
 
+## This function builds the default docker image based on alpine:3.14 (by default)
+make_docker() {
+    EMQX_BUILDER="${EMQX_BUILDER:-${EMQX_DEFAULT_BUILDER}}"
+    EMQX_RUNNER="${EMQX_RUNNER:-${EMQX_DEFAULT_RUNNER}}"
+    set -x
+    docker build --no-cache --pull \
+       --build-arg BUILD_FROM="${EMQX_BUILDER}" \
+       --build-arg RUN_FROM="${EMQX_RUNNER}" \
+       --build-arg EMQX_NAME="$PROFILE" \
+       --tag "emqx/$PROFILE:${PKG_VSN}" \
+       -f "${DOCKERFILE}" .
+}
+
 log "building artifact=$ARTIFACT for profile=$PROFILE"
 log "building artifact=$ARTIFACT for profile=$PROFILE"
 
 
 case "$ARTIFACT" in
 case "$ARTIFACT" in
@@ -148,6 +161,10 @@ case "$ARTIFACT" in
         make -C "deploy/packages/${PKGERDIR}" clean
         make -C "deploy/packages/${PKGERDIR}" clean
         EMQX_REL="$(pwd)" EMQX_BUILD="${PROFILE}" SYSTEM="${SYSTEM}" make -C "deploy/packages/${PKGERDIR}"
         EMQX_REL="$(pwd)" EMQX_BUILD="${PROFILE}" SYSTEM="${SYSTEM}" make -C "deploy/packages/${PKGERDIR}"
         ;;
         ;;
+
+    docker)
+        make_docker
+        ;;
     *)
     *)
         log "Unknown artifact $ARTIFACT"
         log "Unknown artifact $ARTIFACT"
         exit 1
         exit 1

+ 1 - 5
deploy/docker/Dockerfile

@@ -2,9 +2,6 @@ ARG BUILD_FROM=emqx/build-env:erl23.2.7.2-emqx-3-alpine
 ARG RUN_FROM=alpine:3.12
 ARG RUN_FROM=alpine:3.12
 FROM ${BUILD_FROM} AS builder
 FROM ${BUILD_FROM} AS builder
 
 
-ARG QEMU_ARCH=x86_64
-COPY tmp/qemu-$QEMU_ARCH-stati* /usr/bin/
-
 RUN apk add --no-cache \
 RUN apk add --no-cache \
     git \
     git \
     curl \
     curl \
@@ -43,10 +40,9 @@ LABEL org.label-schema.docker.dockerfile="Dockerfile" \
     org.label-schema.vcs-url="https://github.com/emqx/emqx" \
     org.label-schema.vcs-url="https://github.com/emqx/emqx" \
     maintainer="EMQ X Team <support@emqx.io>"
     maintainer="EMQ X Team <support@emqx.io>"
 
 
-ARG QEMU_ARCH=x86_64
 ARG EMQX_NAME=emqx
 ARG EMQX_NAME=emqx
 
 
-COPY deploy/docker/docker-entrypoint.sh tmp/qemu-$QEMU_ARCH-stati* /usr/bin/
+COPY deploy/docker/docker-entrypoint.sh /usr/bin/
 COPY --from=builder /emqx/_build/$EMQX_NAME/rel/emqx /opt/emqx
 COPY --from=builder /emqx/_build/$EMQX_NAME/rel/emqx /opt/emqx
 
 
 RUN ln -s /opt/emqx/bin/* /usr/local/bin/
 RUN ln -s /opt/emqx/bin/* /usr/local/bin/