forked from dapr/dapr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker.mk
88 lines (69 loc) · 3.19 KB
/
docker.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# ------------------------------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------------------------------
# Docker image build and push setting
DOCKER:=docker
DOCKERFILE_DIR?=./docker
ifeq ($(origin DEBUG), undefined)
DOCKERFILE:=Dockerfile
else ifeq ($(DEBUG),0)
DOCKERFILE:=Dockerfile
else
DOCKERFILE:=Dockerfile-debug
endif
# Supported docker image architecture
DOCKERMUTI_ARCH=linux/amd64,linux/arm/v7
################################################################################
# Target: docker-build, docker-push #
################################################################################
LINUX_BINS_OUT_DIR=$(OUT_DIR)/linux_$(GOARCH)
DOCKER_IMAGE_TAG=$(DAPR_REGISTRY)/$(RELEASE_NAME):$(DAPR_TAG)
ifeq ($(LATEST_RELEASE),true)
DOCKER_IMAGE_LATEST_TAG=$(DAPR_REGISTRY)/$(RELEASE_NAME):$(LATEST_TAG)
endif
# To use buildx: https://github.com/docker/buildx#docker-ce
export DOCKER_CLI_EXPERIMENTAL=enabled
# check the required environment variables
check-docker-env:
ifeq ($(DAPR_REGISTRY),)
$(error DAPR_REGISTRY environment variable must be set)
endif
ifeq ($(DAPR_TAG),)
$(error DAPR_TAG environment variable must be set)
endif
# build docker image for linux
docker-build: check-docker-env
$(info Building $(DOCKER_IMAGE_TAG) docker image ...)
$(DOCKER) build --build-arg TARGETPLATFORM=linux/amd64 -f $(DOCKERFILE_DIR)/$(DOCKERFILE) $(OUT_DIR)/. -t $(DOCKER_IMAGE_TAG)
# push docker image to the registry
docker-push: docker-build
$(info Pushing $(DOCKER_IMAGE_TAG) docker image ...)
$(DOCKER) push $(DOCKER_IMAGE_TAG)
# publish muti-arch docker image to the registry
docker-publish: check-docker-env
-$(DOCKER) buildx create --use --name daprbuild
-$(DOCKER) run --rm --privileged multiarch/qemu-user-static --reset -p yes
$(info Pushing $(DOCKER_IMAGE_TAG) docker image ...)
$(DOCKER) buildx build --platform $(DOCKERMUTI_ARCH) -t $(DOCKER_IMAGE_TAG) $(OUT_DIR) -f $(DOCKERFILE_DIR)/$(DOCKERFILE) --push
ifeq ($(LATEST_RELEASE),true)
$(info Pushing $(DOCKER_IMAGE_LATEST_TAG) docker image ...)
$(DOCKER) buildx build --platform $(DOCKERMUTI_ARCH) -t $(DOCKER_IMAGE_LATEST_TAG) $(OUT_DIR) -f $(DOCKERFILE_DIR)/$(DOCKERFILE) --push
endif
################################################################################
# Target: build-dev-container, push-dev-container #
################################################################################
# Update whenever you upgrade dev container image
DEV_CONTAINER_VERSION_TAG?=0.1.1
# Dapr container image name
DEV_CONTAINER_IMAGE_NAME=dapr-dev
DEV_CONTAINER_DOCKERFILE=Dockerfile-dev
DOCKERFILE_DIR=./docker
check-docker-env-for-dev-container:
ifeq ($(DAPR_REGISTRY),)
$(error DAPR_REGISTRY environment variable must be set)
endif
build-dev-container: check-docker-env-for-dev-container
$(DOCKER) build -f $(DOCKERFILE_DIR)/$(DEV_CONTAINER_DOCKERFILE) $(DOCKERFILE_DIR)/. -t $(DAPR_REGISTRY)/$(DEV_CONTAINER_IMAGE_NAME):$(DEV_CONTAINER_VERSION_TAG)
push-dev-container: check-docker-env-for-dev-container
$(DOCKER) push $(DAPR_REGISTRY)/$(DEV_CONTAINER_IMAGE_NAME):$(DEV_CONTAINER_VERSION_TAG)