You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2021/11/17 06:22:11 UTC

[skywalking] 01/01: Add Docker images for arm64 architecture

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch docker/crossplatform
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 575ff33459aa507b679222b0fd1e5a77bc22e5d5
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Wed Nov 17 14:20:00 2021 +0800

    Add Docker images for arm64 architecture
---
 .github/workflows/publish-docker.yaml     |  6 +--
 CHANGES.md                                |  1 +
 Makefile                                  | 71 ++++++++++++-------------------
 docker/oap/{Dockerfile.oap => Dockerfile} |  6 +--
 docker/ui/{Dockerfile.ui => Dockerfile}   |  6 +--
 5 files changed, 33 insertions(+), 57 deletions(-)

diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml
index ddba718..df0b72b 100644
--- a/.github/workflows/publish-docker.yaml
+++ b/.github/workflows/publish-docker.yaml
@@ -52,7 +52,5 @@ jobs:
           registry: ${{ env.HUB }}
           username: ${{ github.actor }}
           password: ${{ secrets.GITHUB_TOKEN }}
-      - name: Build docker image
-        run: |
-          make docker || make docker
-          make docker.push || make docker.push
+      - name: Build and push docker images
+        run: make docker.push || make docker.push
diff --git a/CHANGES.md b/CHANGES.md
index 8fd8127..e448ff9 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -9,6 +9,7 @@ Release Notes.
 
 * E2E tests immigrate to e2e-v2.
 * Support JDK 16 and 17.
+* Add Docker images for arm64 architecture.
 
 #### OAP Server
 
diff --git a/Makefile b/Makefile
index 7aa6b24..de38f97 100644
--- a/Makefile
+++ b/Makefile
@@ -43,64 +43,47 @@ OAP_NAME ?= oap
 UI_NAME ?= ui
 TAG ?= latest
 
-.SECONDEXPANSION: #allow $@ to be used in dependency list
-
-.PHONY: docker docker.all docker.oap
+.PHONY: docker docker.all
 
 docker: init build.all docker.all
 
 DOCKER_TARGETS:=docker.oap docker.ui
 
-docker.all: $(DOCKER_TARGETS)
-
 ifneq ($(SW_OAP_BASE_IMAGE),)
   BUILD_ARGS := $(BUILD_ARGS) --build-arg BASE_IMAGE=$(SW_OAP_BASE_IMAGE)
 endif
 
 BUILD_ARGS := $(BUILD_ARGS) --build-arg DIST=$(DIST) --build-arg SKYWALKING_CLI_VERSION=$(CLI_VERSION)
 
-docker.oap: $(CONTEXT)/$(DIST)
-docker.oap: $(SW_ROOT)/docker/oap/Dockerfile.oap
-docker.oap: $(SW_ROOT)/docker/oap/docker-entrypoint.sh
-docker.oap: $(SW_ROOT)/docker/oap/log4j2.xml
-docker.oap: NAME = $(OAP_NAME)
-docker.oap:
-	$(DOCKER_RULE)
+%.ui: NAME = $(UI_NAME)
+%.oap: NAME = $(OAP_NAME)
 
-docker.ui: $(CONTEXT)/$(DIST)
-docker.ui: $(SW_ROOT)/docker/ui/Dockerfile.ui
-docker.ui: $(SW_ROOT)/docker/ui/docker-entrypoint.sh
-docker.ui: $(SW_ROOT)/docker/ui/logback.xml
-docker.ui: NAME = $(UI_NAME)
-docker.ui:
+docker.%: PLATFORMS =
+docker.%: LOAD_OR_PUSH = --load
+push.%: PLATFORMS = --platform linux/amd64,linux/arm64
+push.%: LOAD_OR_PUSH = --push
+
+docker.% push.docker.%: $(CONTEXT)/$(DIST) $(SW_ROOT)/docker/%/*
 	$(DOCKER_RULE)
 
-# $@ is the name of the target
+docker.all: $(DOCKER_TARGETS)
+docker.push: $(DOCKER_TARGETS:%=push.%)
+
 # $^ the name of the dependencies for the target
 # Rule Steps #
 ##############
-# 1. Make a directory $(DOCKER_BUILD_TOP)/%@
-# 2. This rule uses cp to copy all dependency filenames into into $(DOCKER_BUILD_TOP/$@
-# 3. This rule then changes directories to $(DOCKER_BUID_TOP)/$@
-# 4. This rule runs $(BUILD_PRE) prior to any docker build and only if specified as a dependency variable
-# 5. This rule finally runs docker build passing $(BUILD_ARGS) to docker if they are specified as a dependency variable
-
-DOCKER_RULE=time (mkdir -p $(DOCKER_BUILD_TOP)/$@ && cp -r $^ $(DOCKER_BUILD_TOP)/$@ && cd $(DOCKER_BUILD_TOP)/$@ && $(BUILD_PRE) docker build --no-cache $(BUILD_ARGS) -t $(HUB)/$(NAME):$(TAG) -f Dockerfile$(suffix $@) .)
-
-# for each docker.XXX target create a push.docker.XXX target that pushes
-# the local docker image to another hub
-# a possible optimization is to use tag.$(TGT) as a dependency to do the tag for us
-push.docker.oap: NAME = $(OAP_NAME)
-push.docker.ui: NAME = $(UI_NAME)
-
-$(foreach TGT,$(DOCKER_TARGETS),push.$(TGT)): push.%: %
-	time (docker push $(HUB)/$(NAME):$(TAG))
-
-# create a DOCKER_PUSH_TARGETS that's each of DOCKER_TARGETS with a push. prefix
-DOCKER_PUSH_TARGETS:=
-$(foreach TGT,$(DOCKER_TARGETS),$(eval DOCKER_PUSH_TARGETS+=push.$(TGT)))
-
-# Will build and push docker images.
-docker.push: $(DOCKER_PUSH_TARGETS)
-
-
+# 1. Make a directory $(DOCKER_BUILD_TOP)/$(NAME)
+# 2. This rule uses cp to copy all dependency filenames into into $(DOCKER_BUILD_TOP/$(NAME)
+# 3. This rule finally runs docker build passing $(BUILD_ARGS) to docker if they are specified as a dependency variable
+
+define DOCKER_RULE
+	mkdir -p $(DOCKER_BUILD_TOP)/$(NAME)
+	cp -r $^ $(DOCKER_BUILD_TOP)/$(NAME)
+	docker buildx create --use --driver docker-container --name skywalking_main > /dev/null 2>&1 || true
+	docker buildx build $(PLATFORMS) $(LOAD_OR_PUSH) \
+		--no-cache $(BUILD_ARGS) \
+		-t $(HUB)/$(NAME):$(TAG) \
+		-t $(HUB)/$(NAME):latest \
+		$(DOCKER_BUILD_TOP)/$(NAME)
+	docker buildx rm skywalking_main || true
+endef
diff --git a/docker/oap/Dockerfile.oap b/docker/oap/Dockerfile
similarity index 91%
rename from docker/oap/Dockerfile.oap
rename to docker/oap/Dockerfile
index 02b99ca..7f42d9d 100644
--- a/docker/oap/Dockerfile.oap
+++ b/docker/oap/Dockerfile
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ARG BASE_IMAGE='adoptopenjdk/openjdk11:alpine'
+ARG BASE_IMAGE='openjdk:11-jre'
 
 ARG SKYWALKING_CLI_VERSION
 
@@ -22,8 +22,6 @@ FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli
 
 FROM $BASE_IMAGE
 
-RUN apk add --no-cache openssl
-
 WORKDIR /skywalking
 
 ENV JAVA_OPTS=" -Xms2G "
@@ -51,4 +49,4 @@ RUN mkdir ext-config; \
 
 EXPOSE 12800 11800 1234
 
-ENTRYPOINT ["sh", "docker-entrypoint.sh"]
+ENTRYPOINT ["bash", "docker-entrypoint.sh"]
diff --git a/docker/ui/Dockerfile.ui b/docker/ui/Dockerfile
similarity index 92%
rename from docker/ui/Dockerfile.ui
rename to docker/ui/Dockerfile
index 760631c..e13447e 100644
--- a/docker/ui/Dockerfile.ui
+++ b/docker/ui/Dockerfile
@@ -14,17 +14,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM adoptopenjdk/openjdk11:alpine-jre
+FROM openjdk:11-jre
 
 ENV JAVA_OPTS=" -Xms256M " \
     SW_OAP_ADDRESS="http://127.0.0.1:12800"
 
 WORKDIR skywalking
 
-RUN set -ex; \
-    apk add --no-cache \
-    bash
-
 ARG DIST
 COPY "$DIST" .