Skip to content

Commit

Permalink
Add Docker images for arm64 architecture
Browse files Browse the repository at this point in the history
  • Loading branch information
kezhenxu94 committed Nov 17, 2021
1 parent f1127a7 commit 575ff33
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 57 deletions.
6 changes: 2 additions & 4 deletions .github/workflows/publish-docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
71 changes: 27 additions & 44 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 2 additions & 4 deletions docker/oap/Dockerfile.oap → docker/oap/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,14 @@
# 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

FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli

FROM $BASE_IMAGE

RUN apk add --no-cache openssl

WORKDIR /skywalking

ENV JAVA_OPTS=" -Xms2G "
Expand Down Expand Up @@ -51,4 +49,4 @@ RUN mkdir ext-config; \

EXPOSE 12800 11800 1234

ENTRYPOINT ["sh", "docker-entrypoint.sh"]
ENTRYPOINT ["bash", "docker-entrypoint.sh"]
6 changes: 1 addition & 5 deletions docker/ui/Dockerfile.ui → docker/ui/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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" .

Expand Down

0 comments on commit 575ff33

Please sign in to comment.