Packaging PostGIS dev releases with Docker
We recently added support for GML curves to PostGIS, which enables TinyOWS to deliver WFS requests with curve geometries. More on this in a later post. This enhancement is in the current PostGIS developement version (SVN master) and not released yet. To enable our customer testing this functionality, we had to build packages for their server environment which is Ubuntu Precise with UbuntuGIS repositories. After working with Linux LXC containers and it’s predecessor VServer for years, Docker was a logical choice for a clean reproducible build environment.
Rebuilding a Debian package is usually quite easy:
apt-get build-dep <package>
apt-get source <package>
cd <packagedir>
#Make your changes
dch -i
dpkg-buildpackage
But getting build dependencies for PostGIS currently fails with libssl-dev
conflicts, maybe because the dev packages got out of sync after the recent Heartblead updates. So the Dockerfile uses equivs
to build a dummy package which satisfies the dependencies.
The command
docker run -v /tmp:/pkg sourcepole/postgis-svn-build-env sh -c 'cp /root/*postgis*.deb /pkg'
loads the Docker image with packages built from the latest SVN version of PostGIS in /root
and copies the deb files from the containter into /tmp
.
Now we’re ready to install these packages on the Ubuntu server:
sudo dpkg -i /tmp/*postgis*.deb
Thats it. Feedback welcome!
Pirmin Kalberer (@implgeo)
P.S.
If you happen to be a developer, then you may prefer running a cutting-edge version of PostGIS in a Docker container instead of building packages. Our colleagues from Oslandia just published how to do this.