Merge pull request #43 from mkumatag/gb_multiarch
Multi arch guestbook example
This commit is contained in:
		
						commit
						37e8f218c6
					
				|  | @ -40,6 +40,30 @@ Download the following configuration files: | |||
| 
 | ||||
| {% capture lessoncontent %} | ||||
| 
 | ||||
| ## Building the Docker images | ||||
| 
 | ||||
| ```console | ||||
| $ docker build -t gcr.io/google-samples/gb-frontend:v5 php-redis | ||||
| 
 | ||||
| $ docker build -t gcr.io/google-samples/gb-redisslave:v2 redis-slave | ||||
| ``` | ||||
| 
 | ||||
| Building Multi-architecture docker images | ||||
| 
 | ||||
| ```console | ||||
| $ make -C php-redis | ||||
| 
 | ||||
| $ make -C redis-slave | ||||
| ``` | ||||
| 
 | ||||
| Push: | ||||
| 
 | ||||
| ```console | ||||
| $ make -C php-redis all-push | ||||
| 
 | ||||
| $ make -C redis-slave all-push | ||||
| ``` | ||||
| 
 | ||||
| ## Start up the Redis Master | ||||
| 
 | ||||
| The guestbook application uses Redis to store its data. It writes its data to a Redis master instance and reads data from multiple Redis slave instances. | ||||
|  |  | |||
|  | @ -0,0 +1,81 @@ | |||
| # Copyright 2017 The Kubernetes Authors. All rights reserved.
 | ||||
| #
 | ||||
| # Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| # you may not use this file except in compliance with the License.
 | ||||
| # You may obtain a copy of the License at
 | ||||
| #
 | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| #
 | ||||
| # Unless required by applicable law or agreed to in writing, software
 | ||||
| # distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| # See the License for the specific language governing permissions and
 | ||||
| # limitations under the License.
 | ||||
| 
 | ||||
| TAG = v5 | ||||
| REGISTRY = gcr.io/google-samples | ||||
| ARCH ?= $(shell go env GOARCH) | ||||
| ALL_ARCH = amd64 arm arm64 ppc64le | ||||
| 
 | ||||
| QEMUVERSION=v2.7.0 | ||||
| 
 | ||||
| IMAGE = $(REGISTRY)/gb-frontend | ||||
| MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) | ||||
| 
 | ||||
| # Set default base image dynamically for each arch
 | ||||
| ifeq ($(ARCH),arm) | ||||
| 	QEMUARCH=arm | ||||
| 	BASEIMAGE=armhf/php:5.6-apache | ||||
| endif | ||||
| ifeq ($(ARCH),arm64) | ||||
| 	QEMUARCH=aarch64 | ||||
| 	BASEIMAGE=arm64v8/php:5-apache | ||||
| endif | ||||
| ifeq ($(ARCH),ppc64le) | ||||
| 	QEMUARCH=ppc64le | ||||
| 	BASEIMAGE=ppc64le/php:5-apache | ||||
| endif | ||||
| 
 | ||||
| TEMP_DIR := $(shell mktemp -d) | ||||
| 
 | ||||
| all: all-container | ||||
| 
 | ||||
| sub-container-%: | ||||
| 	$(MAKE) ARCH=$* container | ||||
| 
 | ||||
| sub-push-%: | ||||
| 	$(MAKE) ARCH=$* push | ||||
| 
 | ||||
| all-container: $(addprefix sub-container-,$(ALL_ARCH)) | ||||
| 
 | ||||
| all-push: $(addprefix sub-push-,$(ALL_ARCH)) | ||||
| 
 | ||||
| 
 | ||||
| container: .container-$(ARCH) | ||||
| .container-$(ARCH): | ||||
| 	cp ./* $(TEMP_DIR) | ||||
| 
 | ||||
| ifneq ($(ARCH),amd64) | ||||
| 	cd $(TEMP_DIR) && sed -i "s|FROM php.*|FROM $(BASEIMAGE)\nCOPY qemu-$(QEMUARCH)-static /usr/bin\n|g" Dockerfile | ||||
| 	# Register /usr/bin/qemu-ARCH-static as the handler for ARM binaries in the kernel | ||||
| 	docker run --rm --privileged multiarch/qemu-user-static:register --reset | ||||
| 	curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR) | ||||
| endif | ||||
| 	docker build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) | ||||
| 
 | ||||
| ifeq ($(ARCH), amd64) | ||||
| 	# This is for to maintain the backward compatibility | ||||
| 	docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) | ||||
| endif | ||||
| 
 | ||||
| push: .push-$(ARCH) | ||||
| .push-$(ARCH): .container-$(ARCH) | ||||
| 	gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG) | ||||
| ifeq ($(ARCH), amd64) | ||||
| 	gcloud docker -- push $(IMAGE):$(TAG) | ||||
| endif | ||||
| 
 | ||||
| clean: $(addprefix sub-clean-,$(ALL_ARCH)) | ||||
| 	docker rmi -f $(IMAGE):$(TAG) || true | ||||
| sub-clean-%: | ||||
| 	docker rmi -f $(IMAGE)-$*:$(TAG) || true | ||||
|  | @ -12,10 +12,8 @@ | |||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| FROM redis | ||||
| FROM redis:3.2.9 | ||||
| 
 | ||||
| ADD run.sh /run.sh | ||||
| 
 | ||||
| RUN chmod a+x /run.sh | ||||
| COPY run.sh / | ||||
| 
 | ||||
| CMD /run.sh | ||||
|  |  | |||
|  | @ -0,0 +1,76 @@ | |||
| # Copyright 2017 The Kubernetes Authors. All rights reserved.
 | ||||
| #
 | ||||
| # Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| # you may not use this file except in compliance with the License.
 | ||||
| # You may obtain a copy of the License at
 | ||||
| #
 | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| #
 | ||||
| # Unless required by applicable law or agreed to in writing, software
 | ||||
| # distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| # See the License for the specific language governing permissions and
 | ||||
| # limitations under the License.
 | ||||
| 
 | ||||
| TAG = v2 | ||||
| REGISTRY = gcr.io/google-samples | ||||
| ARCH ?= $(shell go env GOARCH) | ||||
| ALL_ARCH = amd64 arm arm64 ppc64le | ||||
| 
 | ||||
| IMAGE = $(REGISTRY)/gb-redisslave | ||||
| MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) | ||||
| 
 | ||||
| # Set default base image dynamically for each arch
 | ||||
| ifeq ($(ARCH),arm) | ||||
| 	QEMUARCH=arm | ||||
| 	BASEIMAGE=arm32v6/redis:3.2.9-alpine | ||||
| endif | ||||
| ifeq ($(ARCH),arm64) | ||||
| 	QEMUARCH=aarch64 | ||||
| 	BASEIMAGE=arm64v8/redis:3.2.9 | ||||
| endif | ||||
| ifeq ($(ARCH),ppc64le) | ||||
| 	QEMUARCH=ppc64le | ||||
| 	BASEIMAGE=ppc64le/redis:3.2.9 | ||||
| endif | ||||
| 
 | ||||
| TEMP_DIR := $(shell mktemp -d) | ||||
| 
 | ||||
| all: all-container | ||||
| 
 | ||||
| sub-container-%: | ||||
| 	$(MAKE) ARCH=$* container | ||||
| 
 | ||||
| sub-push-%: | ||||
| 	$(MAKE) ARCH=$* push | ||||
| 
 | ||||
| all-container: $(addprefix sub-container-,$(ALL_ARCH)) | ||||
| 
 | ||||
| all-push: $(addprefix sub-push-,$(ALL_ARCH)) | ||||
| 
 | ||||
| container: .container-$(ARCH) | ||||
| .container-$(ARCH): | ||||
| 	cp ./* $(TEMP_DIR) | ||||
| 
 | ||||
| ifneq ($(ARCH), amd64) | ||||
| 	cd $(TEMP_DIR) && sed -i "s|FROM redis.*|FROM $(BASEIMAGE)|g" Dockerfile | ||||
| endif | ||||
| 
 | ||||
| 	docker build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) | ||||
| 
 | ||||
| ifeq ($(ARCH), amd64) | ||||
|         # This is for to maintain the backward compatibility | ||||
| 	docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) | ||||
| endif | ||||
| 
 | ||||
| push: .push-$(ARCH) | ||||
| .push-$(ARCH): .container-$(ARCH) | ||||
| 	gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG) | ||||
| ifeq ($(ARCH), amd64) | ||||
| 	gcloud docker -- push $(IMAGE):$(TAG) | ||||
| endif | ||||
| 
 | ||||
| clean: $(addprefix sub-clean-,$(ALL_ARCH)) | ||||
| 	docker rmi -f $(IMAGE):$(TAG) || true | ||||
| sub-clean-%: | ||||
| 	docker rmi -f $(IMAGE)-$*:$(TAG) || true | ||||
		Loading…
	
		Reference in New Issue