步骤
- 构建基础镜像(dev / compile 镜像)
- 训练
- 构建 Training Build 镜像(打包 MetaSpore Wheel 安装包)
- 构建 Training Build Release 镜像(训练镜像,包含 Spark 等依赖)
- 开发
- 构建 Jupyter 镜像
- 构建 Code Server 镜像
- 在线 Serving
- 构建 Serving Build 镜像(基于 dev 镜像)
- 构建 Serving Release 镜像(Release 版本的可发布镜像,基于 ubuntu 镜像,安装必要依赖、拷贝 Release 版本二进制文件)
构建
在 Fork 的代码库中新增了 Makefile 用于方便地构建目标、镜像。
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
| .PHONY: dev training serving jupyter code-server all
REPOSITORY := sunzhenkai VERSION := 0.0.1 RUNTIME := cpu FIX_ARG := --network host --build-arg RUNTIME=$(RUNTIME) --build-arg http_proxy=${http_proxy} --build-arg https_proxy=${https_proxy} DOCKER_CMD := DOCKER_BUILDKIT=1 docker build $(FIX_ARG)
DEV_IMAGE := $(REPOSITORY)/metaspore-dev-$(RUNTIME):$(VERSION) TRAINING_BUILD_IMAGE := $(REPOSITORY)/metaspore-training-build:$(VERSION) TRAINING_RELEASE_IMAGE := $(REPOSITORY)/metaspore-training-release:$(VERSION) SERVING_BUILD_IMAGE := $(REPOSITORY)/metaspore-serving-build:$(VERSION) SERVING_RELEASE_IMAGE := $(REPOSITORY)/metaspore-serving-release:$(VERSION) JUPYTER_IMAGE := $(REPOSITORY)/metaspore-training-jupyter:$(VERSION) CODESERVER_IMAGE := $(REPOSITORY)/metaspore-codeserver:$(VERSION)
dev: @$(DOCKER_CMD) $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_dev -t $(DEV_IMAGE) .
training: dev @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_training_build --build-arg DEV_IMAGE=$(DEV_IMAGE) -t $(TRAINING_BUILD_IMAGE) . @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_training_release --build-arg METASPORE_RELEASE=build --build-arg METASPORE_BUILD_IMAGE=$(TRAINING_BUILD_IMAGE) -t $(TRAINING_RELEASE_IMAGE) --target release .
serving: dev @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_serving_build --build-arg DEV_IMAGE=$(DEV_IMAGE) -t $(SERVING_BUILD_IMAGE) . @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_serving_release --build-arg BUILD_IMAGE=$(SERVING_BUILD_IMAGE) -t $(SERVING_RELEASE_IMAGE) --target serving_release .
jupyter: @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_jupyter --build-arg RELEASE_IMAGE=$(TRAINING_RELEASE_IMAGE) -t $(JUPYTER_IMAGE) docker/ubuntu20.04
code-server: @DOCKER_BUILDKIT=1 docker build $(FIX_ARG) -f docker/ubuntu20.04/Dockerfile_codeserver --build-arg RELEASE_IMAGE=$(TRAINING_RELEASE_IMAGE) -t $(CODESERVER_IMAGE) docker/ubuntu20.04
all: dev training serving jupyter code-server
|
运行 make all
就可以构建基础镜像、Serving、Training、Jupyter、Code Server 镜像。