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" .