02-工程实践:kubernetes:dev:makefile
Makefile样例
- Makefile
IMAGENAME ?= $(shell pwd |awk -F'/' '{print $$NF}')
REGISTRY ?= registry.cn-beijing.aliyuncs.com/kubebase
TAG ?= latest
IMAGE = $(REGISTRY)/$(IMAGENAME)
# 以下3行用于自动更新dev环境上的部署
CMDBAPI ?= http://cmdb.scloud.cn/api/k8s.php
CLUSTER ?= dev
APP ?= $(shell pwd |awk -F'/' '{print $$NF}')
# 判断本地是否已经运行此容器,用于调试
exists ?= $(shell docker ps -a |grep $(APP) &>/dev/null && echo "yes" || echo "no")
PORT ?= 8080
PWD =$(shell pwd)
# k8s预定义的APP_CONFIG_PATH环境变量默认值为/run/secret/appconfig
APP_CONFIG_PATH ?= /run/secret/appconfig
all: build-docker push up config
build-docker:
docker build -t $(IMAGE):$(TAG) .
push:
docker push $(IMAGE):$(TAG)
# 通过定义 // CONFIG-BY-ENV 格式的注释,抓取所有需要用环境变量设置的配置项
config:
find ./ -name "*.php" |xargs grep "// CONFIG-BY-ENV" |awk -F':' '{print $$3": "}' |tr -d ' ' > config.md
# 本地调试
debug: build-docker run
# 本地运行容器,需要先判断容器是否存在
run:
ifeq ($(exists), yes)
docker stop $(APP);docker rm $(APP)
endif
docker run --name $(APP) -d -p $(PORT):80 --env APP_CONFIG_PATH=$(APP_CONFIG_PATH) -v $(PWD)/somepath/config.json:$(APP_CONFIG_PATH)/CONFIG $(IMAGE):$(TAG)
# 上线到dev集群
up:
sleep 1;echo;curl -s "$(CMDBAPI)?cluster=$(CLUSTER)&app=$(APP)";echo
02-工程实践/kubernetes/dev/makefile.txt · 最后更改: 2020/04/07 06:34 由 annhe