-
Notifications
You must be signed in to change notification settings - Fork 157
/
Copy pathDockerfile
83 lines (66 loc) · 2.62 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
# Dockerfile to build Imposm releases for Linux
# ---------------------------------------------
#
# It installs and builds all dependencies, compiles the master
# branch of this local repository and creates a .tar.gz with
# the imposm binary and all 3rd party dependencies.
#
# This script is made for Debian 10. The resulting binaries
# should be compatible with all more recent Linux distribution.
#
# Release tar.gz is copied to /imposm/dist, use mounts to get the file.
# Example:
# podman build -t imposm-build-debian10 .
# podman run --rm -v ./dist:/imposm/dist -t imposm-build-debian10
FROM debian:10
RUN apt-get update && \
apt-get install -y \
build-essential \
unzip \
autoconf \
libtool \
git \
cmake \
patchelf \
curl \
&& \
rm -rf /var/lib/apt/lists/*
WORKDIR /imposm
ARG PREFIX=/imposm/local
ENV CGO_CFLAGS=-I$PREFIX/include
ENV CGO_LDFLAGS=-L$PREFIX/lib
ENV LD_LIBRARY_PATH=$PREFIX/lib
RUN mkdir -p $PREFIX/lib && mkdir -p $PREFIX/include
ARG GOLANG_VERSION=1.24.0
RUN curl -L -O https://go.dev/dl/go$GOLANG_VERSION.linux-amd64.tar.gz && \
rm -rf /usr/local/go && tar -C /usr/local -xzf go$GOLANG_VERSION.linux-amd64.tar.gz && \
rm go$GOLANG_VERSION.linux-amd64.tar.gz
ENV PATH="$PATH:/usr/local/go/bin"
ARG LEVELDB_VERSION=1.23
RUN curl -L https://github.com/google/leveldb/archive/refs/tags/$LEVELDB_VERSION.tar.gz | \
tar -xz && \
cd leveldb-$LEVELDB_VERSION && \
mkdir -p build && cd build && \
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DLEVELDB_BUILD_TESTS=OFF -DLEVELDB_BUILD_BENCHMARKS=OFF .. && \
cmake --build . && \
cp -R ./liblevel* $PREFIX/lib/ && \
cp -R ../include/leveldb $PREFIX/include/
ARG GEOS_VERSION=3.12.2
RUN curl -L http://download.osgeo.org/geos/geos-$GEOS_VERSION.tar.bz2 | tar -jx && \
cd geos-$GEOS_VERSION/ && \
./configure --prefix=$PREFIX && make -j2 && make install
RUN mkdir src && git config --global --add safe.directory src
COPY . src
RUN cd src && make build
RUN mkdir -p build \ && \
cp src/imposm build/ && \
cp src/README.md build/ && \
cp src/example-mapping.json build/mapping.json && \
mkdir -p build/lib && \
cp $PREFIX/lib/libgeos_c.so build/lib && \
ln -s libgeos_c.so build/lib/libgeos_c.so.1 && \
cp $PREFIX/lib/libgeos.so build/lib && \
ln -s libgeos.so build/lib/libgeos.so.$GEOS_VERSION && \
cp -R $PREFIX/lib/libleveldb.so* build/lib && \
patchelf --set-rpath '$ORIGIN' build/lib/libgeos_c.so
CMD bash -c 'cd /imposm && VERSION=$(./build/imposm version)-linux-x86-64 && mv build imposm-$VERSION && tar zcvf dist/imposm-$VERSION.tar.gz imposm-$VERSION'