Commit | Line | Data |
---|---|---|
3447089f JR |
1 | IMAGE_VERSION := 1.3.7 |
2 | ||
3 | SHELL := /bin/bash | |
4 | OS := $(shell uname | tr '[:upper:]' '[:lower:]') | |
5 | ||
0e0a4a48 JR |
6 | SQUASH ?= YES |
7 | ||
3447089f JR |
8 | DOCKER_SQUASH_URL := https://github.com/jwilder/docker-squash/releases/download/v0.2.0/docker-squash-${OS}-amd64-v0.2.0.tar.gz |
9 | ||
10 | ||
0e0a4a48 | 11 | |
3447089f JR |
12 | # omitting discourse_fast_switch from 'all' as it seems obsolete. |
13 | all: base discourse discourse_dev discourse_test discourse_bench | |
14 | .PHONY: all base discourse discourse_dev discourse_test discourse_bench discourse_fast_switch | |
15 | ||
16 | base: base-deps | |
17 | # discourse: discourse-deps | |
18 | discourse_dev: discourse_dev-deps | |
19 | # discourse_test: discourse_test-deps | |
20 | # discourse_bench: discourse_bench-deps | |
21 | # discourse_fast_switch: discourse_fast_switch-deps | |
22 | ||
23 | base: | |
24 | @IMAGE_DIR=$@ IS_BASE=YES ${MAKE} build-image | |
25 | ||
39cb5472 | 26 | discourse discourse_dev discourse_test discourse_bench discourse_fast_switch: |
3447089f JR |
27 | @IMAGE_DIR=$@ ${MAKE} build-image |
28 | ||
29 | ||
30 | base-deps: base/phantomjs | |
31 | .PHONY: base-deps | |
32 | ||
33 | base/phantomjs: | |
34 | @echo "Fetching phantomjs..." | |
35 | cd base && ./download_phantomjs | |
36 | ||
37 | discourse_dev-deps: | |
38 | @echo "Copying postgres and redis templates..." | |
39 | sed -e 's/\(db_name: discourse\)/\1_development/' ../templates/postgres.template.yml > discourse_dev/postgres.template.yml | |
40 | cp ../templates/redis.template.yml discourse_dev/redis.template.yml | |
41 | .PHONY: discourse_dev-deps | |
42 | ||
0e0a4a48 JR |
43 | # If you don't want to docker-squash the image, prefix your command line with |
44 | # SQUASH=NO, like: | |
45 | # SQUASH=NO make discourse_dev | |
3447089f JR |
46 | build-image: docker-squash update-dockerfile |
47 | @echo "----- building image: discourse/${IMAGE_DIR}:${IMAGE_VERSION} -----" | |
0e0a4a48 | 48 | ifeq (${SQUASH}, YES) |
3447089f | 49 | docker build ${IMAGE_DIR} | tee .build.out |
39cb5472 JR |
50 | tail -1 .build.out | awk '/^Successfully built / {print $$3}' > .build.hash |
51 | @echo "squashing $$(cat .build.hash)..." | |
52 | docker save -o img.tar $$(cat .build.hash) | |
53 | sudo ./docker-squash -verbose -i img.tar -o squash.tar $(if $(IS_BASE),-from root) | |
3447089f | 54 | docker load -i squash.tar |
39cb5472 | 55 | docker tag $$(cat .build.hash) discourse/${IMAGE_DIR}:${IMAGE_VERSION} |
3447089f JR |
56 | rm -f squash.tar |
57 | rm -f img.tar | |
39cb5472 | 58 | rm -f .build.hash |
3447089f | 59 | rm -f .build.out |
0e0a4a48 JR |
60 | else |
61 | docker build -t discourse/${IMAGE_DIR}:${IMAGE_VERSION} ${IMAGE_DIR} | |
3447089f JR |
62 | endif |
63 | .PHONY: build-image | |
64 | ||
65 | docker-squash: | |
66 | wget ${DOCKER_SQUASH_URL} --output-document=$@.tar.gz | |
67 | tar -xzvf $@.tar.gz | |
68 | rm -f $@.tar.gz | |
69 | ||
70 | # We want to ensure that the Dockerfiles all have an appropriate header | |
71 | # comment, and any FROM line refers to the version we're currently building. | |
72 | # Also, if there's a line that echoes into VERSION, replace the value with the | |
73 | # current version. (Dockerfiles support environment expansion, but not for | |
74 | # FROM or RUN statements.) | |
75 | update-dockerfile: | |
76 | @echo "----- updating ${IMAGE_DIR}/Dockerfile for ${IMAGE_VERSION} -----" | |
77 | @sed -i '' -e 's/^\(# NAME:\).*$$/\1 discourse\/${IMAGE_DIR}/' ${IMAGE_DIR}/Dockerfile | |
78 | @sed -i '' -e 's/^\(# VERSION:\).*$$/\1 ${IMAGE_VERSION}/' ${IMAGE_DIR}/Dockerfile | |
79 | @sed -i '' -e 's/^\(FROM discourse\/[^:]*:\).*/\1${IMAGE_VERSION}/' ${IMAGE_DIR}/Dockerfile | |
80 | @sed -i '' -e 's/^\(RUN echo "\)[^"]*\(" > \/VERSION\)$$/\1${IMAGE_VERSION}\2/' ${IMAGE_DIR}/Dockerfile | |
81 | .PHONY: update-dockerfile |