-
Notifications
You must be signed in to change notification settings - Fork 3
/
Dockerfile
121 lines (105 loc) · 3.25 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
FROM ubuntu:16.04
MAINTAINER Vaclav Petras <wenzeslaus@gmail.com>
# system environment
ENV DEBIAN_FRONTEND noninteractive
# GRASS GIS compile dependencies
RUN apt-get update \
&& apt-get install -y \
autoconf2.13 \
autotools-dev \
bison \
flex \
g++ \
gettext \
libblas-dev \
libbz2-dev \
libcairo2-dev \
libfftw3-dev \
libfreetype6-dev \
libgdal-dev \
libgeos-dev \
libglu1-mesa-dev \
libjpeg-dev \
liblapack-dev \
liblas-c-dev \
libncurses5-dev \
libnetcdf-dev \
libpng-dev \
libpq-dev \
libproj-dev \
libreadline-dev \
libsqlite3-dev \
libtiff-dev \
libxmu-dev \
make \
netcdf-bin \
proj-bin \
python \
python-dev \
python-numpy \
python-pil \
python-ply \
unixodbc-dev \
zlib1g-dev \
imagemagick \
p7zip \
subversion \
&& apt-get autoremove \
&& apt-get clean
# install GRASS GIS
# using a specific revision, otherwise we can't apply the patch safely
WORKDIR /usr/local/src
RUN svn checkout -r 69986 https://svn.osgeo.org/grass/grass/trunk grass \
&& cd grass \
&& ./configure \
--enable-largefile=yes \
--with-nls \
--with-cxx \
--with-readline \
--with-bzlib \
--with-pthread \
--with-proj-share=/usr/share/proj \
--with-geos=/usr/bin/geos-config \
--with-cairo \
--with-opengl-libs=/usr/include/GL \
--with-freetype=yes --with-freetype-includes="/usr/include/freetype2/" \
--with-sqlite=yes \
--with-liblas=yes --with-liblas-config=/usr/bin/liblas-config \
&& make && make install && ldconfig
# cannot delete src now, patch will be needed
# enable simple grass command regardless of version number
RUN ln -s /usr/local/bin/grass* /usr/local/bin/grass
# install additional GRASS GIS modules, each as a separate step
RUN grass -c EPSG:4326 /tmp/grasstmploc -e
# no ARG in Docker 1.6.2, only ENV
ENV addons=https://svn.osgeo.org/grass/grass-addons/grass7
WORKDIR /usr/local/src
RUN svn checkout -r 69857 $addons/raster3d/r3.count.categories r3.count.categories \
&& grass /tmp/grasstmploc/PERMANENT --exec \
g.extension -s r3.count.categories url=r3.count.categories
RUN svn checkout -r 69888 $addons/raster3d/r3.forestfrag r3.forestfrag \
&& grass /tmp/grasstmploc/PERMANENT --exec \
g.extension -s r3.forestfrag url=r3.forestfrag
RUN svn checkout -r 69887 $addons/raster3d/r3.profile r3.profile \
&& grass /tmp/grasstmploc/PERMANENT --exec \
g.extension -s r3.profile url=r3.profile
RUN rm -r /tmp/grasstmploc
RUN mkdir /code
# fix for #2992 (https://trac.osgeo.org/grass/ticket/2992)
# removes source code at the end
COPY r3.null.patch /code/
WORKDIR /usr/local/src/grass
RUN patch -p0 < /code/r3.null.patch \
&& cd raster3d/r3.null \
&& make && make install \
&& cd ../../.. && rm -r grass
# create a user
RUN useradd -m -U grass
VOLUME ["/data"]
# add repository files to the image
COPY . /code
# change the owner so that the user can execute
RUN chown -R grass:grass /code
# switch the user
USER grass
WORKDIR /data