Make the arvados/jobs image leaner.
[arvados.git] / docker / build_tools / Makefile
index d92349c50be7f387faeaa798f91867d0c8b6bf5f..6d014b91fa1665d031ea1caa283b576028c8ed70 100644 (file)
@@ -4,7 +4,7 @@ OLD_SHELL := $(SHELL)
 SHELL = $(warning [$@])$(OLD_SHELL) -x
 endif
 
-all: skydns-image skydock-image api-image compute-image doc-image workbench-image keep-image sso-image shell-image
+all: skydns-image skydock-image api-image compute-image doc-image workbench-image keep-image keep-proxy-image sso-image shell-image
 
 IMAGE_FILES := $(shell ls *-image 2>/dev/null |grep -v -E 'debian-arvados-image|skydns-image|skydock-image')
 GENERATED_DIRS := $(shell ls */generated 2>/dev/null)
@@ -19,7 +19,7 @@ clean:
 
 DEBIAN_IMAGE := $(shell $(DOCKER) images -q arvados/debian |head -n1)
 
-REALCLEAN_CONTAINERS := $(shell $(DOCKER) ps -a |grep -e arvados -e api_server -e keep_server -e doc_server -e workbench_server |cut -f 1 -d' ')
+REALCLEAN_CONTAINERS := $(shell $(DOCKER) ps -a |grep -e arvados -e api_server -e keep_server -e keep_proxy_server -e doc_server -e workbench_server |cut -f 1 -d' ')
 REALCLEAN_IMAGES := $(shell $(DOCKER) images -q arvados/* |grep -v $(DEBIAN_IMAGE) 2>/dev/null)
 DEEPCLEAN_IMAGES := $(shell $(DOCKER) images -q arvados/*)
 SKYDNS_CONTAINERS := $(shell $(DOCKER) ps -a |grep -e crosbymichael/skydns -e crosbymichael/skydock |cut -f 1 -d' ')
@@ -60,6 +60,8 @@ SLURM_DEPS = slurm/Dockerfile config.yml $(SLURM_GENERATED)
 
 JOBS_DEPS = jobs/Dockerfile
 
+ARV_WEB_DEPS = arv-web/Dockerfile arv-web/apache2_foreground.sh arv-web/apache2_vhost
+
 JAVA_BWA_SAMTOOLS_DEPS = java-bwa-samtools/Dockerfile
 
 API_DEPS = api/* config.yml $(API_GENERATED)
@@ -68,7 +70,7 @@ SHELL_DEPS = shell/* config.yml $(SHELL_GENERATED)
 
 COMPUTE_DEPS = compute/* config.yml $(COMPUTE_GENERATED)
 
-DOC_DEPS = doc/Dockerfile doc/apache2_vhost
+DOC_DEPS = doc/Dockerfile $(DOC_GENERATED)
 
 WORKBENCH_DEPS = workbench/Dockerfile \
                  config.yml \
@@ -76,6 +78,8 @@ WORKBENCH_DEPS = workbench/Dockerfile \
 
 KEEP_DEPS = keep/Dockerfile config.yml $(KEEP_GENERATED)
 
+KEEP_PROXY_DEPS = keepproxy/Dockerfile config.yml $(KEEP_PROXY_GENERATED)
+
 SSO_DEPS = config.yml $(SSO_GENERATED)
 
 BCBIO_NEXTGEN_DEPS = bcbio-nextgen/Dockerfile
@@ -88,6 +92,9 @@ COMPUTE_GENERATED      = compute/generated/*
 KEEP_GENERATED_IN      = keep/*.in
 KEEP_GENERATED         = keep/generated/*
 
+KEEP_PROXY_GENERATED_IN      = keepproxy/*.in
+KEEP_PROXY_GENERATED         = keepproxy/generated/*
+
 API_GENERATED_IN       = api/*.in
 API_GENERATED          = api/generated/*
 
@@ -103,6 +110,9 @@ WORKBENCH_GENERATED    = workbench/generated/*
 SSO_GENERATED_IN       = sso/*.in
 SSO_GENERATED          = sso/generated/*
 
+DOC_GENERATED_IN       = doc/*.in
+DOC_GENERATED          = doc/generated/*
+
 KEEP_DEPS += keep/generated/bin/keepproxy
 KEEP_DEPS += keep/generated/bin/keepstore
 keep/generated/bin/%: $(wildcard build/services/%/*.go)
@@ -110,6 +120,12 @@ keep/generated/bin/%: $(wildcard build/services/%/*.go)
        ln -sfn ../../../../.. keep/generated/src/git.curoverse.com/arvados.git
        GOPATH=$(shell pwd)/keep/generated go get $(@:keep/generated/bin/%=git.curoverse.com/arvados.git/services/%)
 
+KEEP_PROXY_DEPS += keepproxy/generated/bin/keepproxy
+keepproxy/generated/bin/%: $(wildcard build/services/%/*.go)
+       mkdir -p keepproxy/generated/src/git.curoverse.com
+       ln -sfn ../../../../.. keepproxy/generated/src/git.curoverse.com/arvados.git
+       GOPATH=$(shell pwd)/keepproxy/generated go get $(@:keepproxy/generated/bin/%=git.curoverse.com/arvados.git/services/%)
+
 $(BUILD):
        mkdir -p build
        rsync -rlp --exclude=docker/ --exclude='**/log/*' --exclude='**/tmp/*' \
@@ -145,9 +161,15 @@ $(COMPUTE_GENERATED): $(COMPUTE_GENERATED_IN)
 $(SSO_GENERATED): $(SSO_GENERATED_IN)
        $(CONFIG_RB) sso
 
+$(DOC_GENERATED): $(DOC_GENERATED_IN)
+       $(CONFIG_RB) doc
+
 $(KEEP_GENERATED): $(KEEP_GENERATED_IN)
        $(CONFIG_RB) keep
 
+$(KEEP_PROXY_GENERATED): $(KEEP_PROXY_GENERATED_IN)
+       $(CONFIG_RB) keepproxy
+
 DOCKER_BUILD = $(DOCKER) build --rm=true
 
 # ============================================================
@@ -183,7 +205,12 @@ keep-image: debian-arvados-image $(BUILD) $(KEEP_DEPS)
        $(DOCKER_BUILD) -t arvados/keep keep
        date >keep-image
 
-jobs-image: base-image $(BUILD) $(JOBS_DEPS)
+keep-proxy-image: debian-arvados-image $(BUILD) $(KEEP_PROXY_DEPS)
+       @echo "Building keep-proxy-image"
+       $(DOCKER_BUILD) -t arvados/keepproxy keepproxy
+       date >keep-proxy-image
+
+jobs-image: debian-arvados-image $(BUILD) $(JOBS_DEPS)
        $(DOCKER_BUILD) -t arvados/jobs jobs
        date >jobs-image
 
@@ -209,6 +236,10 @@ sso-image: passenger-image $(SSO_DEPS)
        $(DOCKER_BUILD) -t arvados/sso sso
        date >sso-image
 
+arv-web-image: passenger-image $(ARV_WEB_DEPS)
+       $(DOCKER_BUILD) -t arvados/arv-web arv-web
+       date >arv-web-image
+
 # ============================================================
 # The arvados/base image is the base Debian image plus packages
 # that are dependencies for every Arvados service.
@@ -230,7 +261,7 @@ base-image: debian-arvados-image $(BASE_DEPS)
 
 debian-arvados-image:
        @echo "Building debian-arvados-image"
-       ./mkimage-debootstrap.sh arvados/debian wheezy ftp://ftp.us.debian.org/debian/
+       ./mkimage-debootstrap.sh arvados/debian wheezy http://ftp.us.debian.org/debian/
        date >debian-arvados-image
 
 skydns-image: