Skip to content

Commit

Permalink
Merge pull request #52 from camptocamp/multistage-build
Browse files Browse the repository at this point in the history
Use multistage build
  • Loading branch information
sbrunner authored Mar 6, 2020
2 parents 9164884 + fd2d117 commit e33ba32
Show file tree
Hide file tree
Showing 14 changed files with 53 additions and 99 deletions.
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
acceptance_tests/
ci
Dockerfile
.dockerignore
.git
.github
.gitignore
Makefile
README.md
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
/acceptance_tests/junitxml
/server/build
/server/target
/src
41 changes: 39 additions & 2 deletions server/Dockerfile → Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,40 @@
FROM ubuntu:18.04
FROM ubuntu:18.04 as builder
LABEL maintainer="[email protected]"

RUN apt-get update && \
LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y bison flex python-lxml libfribidi-dev swig \
cmake librsvg2-dev colordiff libpq-dev libpng-dev libjpeg-dev libgif-dev libgeos-dev libgd-dev \
libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal-dev libproj-dev libxml2-dev \
libxslt1-dev python-dev php-dev libexempi-dev lcov lftp libgdal-dev ninja-build git curl \
clang libprotobuf-c-dev protobuf-c-compiler libharfbuzz-dev libcairo2-dev librsvg2-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

ARG MAPSERVER_BRANCH

RUN git clone https://github.com/mapserver/mapserver --branch=${MAPSERVER_BRANCH} --depth=100 /src

COPY checkout_release /tmp
RUN cd /src; /tmp/checkout_release ${MAPSERVER_BRANCH}

WORKDIR /src/build
RUN cmake .. \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DWITH_CLIENT_WMS=1 \
-DWITH_CLIENT_WFS=1 \
-DWITH_KML=1 \
-DWITH_SOS=1 \
-DWITH_XMLMAPFILE=1 \
-DWITH_POINT_Z_M=1 \
-DWITH_CAIRO=1 \
-DWITH_RSVG=1

RUN ninja install


FROM ubuntu:18.04 as runner
LABEL maintainer="[email protected]"

# let's copy a few of the settings from /etc/init.d/apache2
Expand Down Expand Up @@ -41,8 +77,9 @@ RUN a2enmod fcgid headers status && \

EXPOSE 80

COPY --from=builder /usr/local/bin /usr/local/bin/
COPY --from=builder /usr/local/lib /usr/local/lib/
COPY runtime /
COPY target /usr/local/

ENV MS_DEBUGLEVEL=0 \
MS_ERRORFILE=stderr \
Expand Down
32 changes: 4 additions & 28 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,35 +26,11 @@ all: acceptance

.PHONY: pull
pull:
for image in `find -name Dockerfile | xargs grep --no-filename FROM | awk '{print $$2}'`; do docker pull $$image; done

src:
git clone https://github.com/mapserver/mapserver src

.PHONY: update-src
update-src: src
./checkout_release.sh $(MAPSERVER_BRANCH)

.PHONY: build-builder
build-builder:
docker build --tag $(DOCKER_IMAGE)-builder:$(DOCKER_TAG) builder

.PHONY: build-src
build-src: build-builder update-src
mkdir -p server/build server/target
docker run --rm -e UID=$(UID) -e GID=$(GID) --volume $(ROOT)/src:/src --volume $(ROOT)/server/build:/build --volume $(ROOT)/server/target:/usr/local --volume $(HOME)/.ccache:/home/builder/.ccache $(DOCKER_IMAGE)-builder:$(DOCKER_TAG)

.PHONY: run-builder
run-builder: build-builder update-src
mkdir -p server/build server/target
docker run -ti --rm -e UID=$(UID) -e GID=$(GID) --volume $(ROOT)/src:/src --volume $(ROOT)/server/build:/build --volume $(ROOT)/server/target:/usr/local --volume $(HOME)/.ccache:/home/builder/.ccache $(DOCKER_IMAGE)-builder:$(DOCKER_TAG) bash

.PHONY: build-server
build-server: build-src
docker build --tag $(DOCKER_IMAGE):$(DOCKER_TAG) server
for image in `find -name Dockerfile | xargs grep --no-filename ^FROM | awk '{print $$2}'`; do docker pull $$image; done

.PHONY: build
build: build-server
build:
docker build --tag=$(DOCKER_IMAGE):$(DOCKER_TAG) --target=runner --build-arg=MAPSERVER_BRANCH=$(MAPSERVER_BRANCH) .

.PHONY: acceptance
acceptance: build
Expand All @@ -64,4 +40,4 @@ acceptance: build

.PHONY: clean
clean:
rm -rf acceptance_tests/junitxml/ server/build server/target
rm -rf acceptance_tests/junitxml/
1 change: 0 additions & 1 deletion builder/.dockerignore

This file was deleted.

13 changes: 0 additions & 13 deletions builder/Dockerfile

This file was deleted.

25 changes: 0 additions & 25 deletions builder/build.sh

This file was deleted.

23 changes: 0 additions & 23 deletions builder/entry.sh

This file was deleted.

3 changes: 1 addition & 2 deletions checkout_release.sh → checkout_release
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -eux

if [ "$#" -ne 1 ]
then
Expand All @@ -11,7 +11,6 @@ fi
BRANCH=$1
TAG_PREFIX=`echo $BRANCH | sed -e 's/branch-/rel-/'`

cd src
git fetch --tags
LAST_RELEASE=`git log --format=%H --tags=$TAG_PREFIX* --no-walk | head -1`
git checkout --detach $LAST_RELEASE
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 0 additions & 2 deletions server/.dockerignore

This file was deleted.

0 comments on commit e33ba32

Please sign in to comment.