diff --git a/rules/docker-base.mk b/rules/docker-base.mk index 56e42ac97b45..b4d15667183a 100644 --- a/rules/docker-base.mk +++ b/rules/docker-base.mk @@ -3,4 +3,4 @@ DOCKER_BASE = docker-base.gz $(DOCKER_BASE)_PATH = $(DOCKERS_PATH)/docker-base -SONIC_SIMPLE_DOCKER_IMAGES += $(DOCKER_BASE) +SONIC_SQUASH_SIMPLE_DOCKER_IMAGES += $(DOCKER_BASE) diff --git a/slave.mk b/slave.mk index ee89df4b4c8b..612361d151c8 100644 --- a/slave.mk +++ b/slave.mk @@ -239,6 +239,15 @@ $(SONIC_INSTALL_WHEELS) : $(PYTHON_WHEELS_PATH)/%-install : .platform $$(addsuff docker-start : @sudo service docker start &> /dev/null && sleep 1 +# targets for building squashed simple docker images that do not depend on any debian packages +$(addprefix $(TARGET_PATH)/, $(SONIC_SQUASH_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS))) + $(HEADER) + docker build --no-cache -t $* $($*.gz_PATH) $(LOG) + docker run --name $*.squash -d $* /bin/bash + docker export $*.squash | docker import - $* + docker save $* | gzip -c > $@ + $(FOOTER) + # targets for building simple docker images that do not depend on any debian packages $(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS))) $(HEADER) @@ -260,6 +269,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .pl DOCKER_LOAD_TARGETS = $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \ $(SONIC_SIMPLE_DOCKER_IMAGES) \ + $(SONIC_SQUASH_SIMPLE_DOCKER_IMAGES) \ $(SONIC_DOCKER_IMAGES))) $(DOCKER_LOAD_TARGETS) : $(TARGET_PATH)/%.gz-load : .platform docker-start $$(TARGET_PATH)/$$*.gz $(HEADER) @@ -297,7 +307,8 @@ $(SONIC_CLEAN_DEBS) : $(DEBS_PATH)/%-clean : .platform $$(addsuffix -clean,$$(ad SONIC_CLEAN_TARGETS += $(addsuffix -clean,$(addprefix $(TARGET_PATH)/, \ $(SONIC_DOCKER_IMAGES) \ - $(SONIC_SIMPLE_DOCKER_IMAGES))) + $(SONIC_SIMPLE_DOCKER_IMAGES) \ + $(SONIC_SQUASH_SIMPLE_DOCKER_IMAGES))) $(SONIC_CLEAN_TARGETS) : $(TARGET_PATH)/%-clean : .platform @rm -f $(TARGET_PATH)/$*