-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
98 lines (78 loc) · 2.51 KB
/
Dockerfile
File metadata and controls
98 lines (78 loc) · 2.51 KB
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
ARG NODE_VERSION=20
FROM ubuntu:20.04 as build
ENV DEBIAN_FRONTEND=noninteractive
ARG OSM2PGSQL_REPOSITORY=https://github.com/MapColonies/osm2pgsql.git
ARG OSM2PGSQL_COMMIT_SHA=078884e01c1dc3c9c20c85cf9e57436b294e7e65
ARG OSMIUM_TOOL_TAG=v1.18.0
ARG PROTOZERO_TAG=v1.8.0
ARG LIBOSMIUM_TAG=v2.22.0
RUN apt-get -y update && apt -y install \
make \
cmake \
g++ \
libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
libexpat1-dev \
zlib1g-dev \
libbz2-dev \
libpq-dev \
libproj-dev \
liblua5.3-dev \
pandoc \
git-core \
libboost-program-options-dev \
libopencv-dev \
nlohmann-json3-dev \
libpotrace-dev \
lua5.3 \
pyosmium \
libluajit-5.1-dev
RUN git clone ${OSM2PGSQL_REPOSITORY} ./osm2pgsql && \
cd osm2pgsql && \
git checkout ${OSM2PGSQL_COMMIT_SHA} && \
mkdir build && \
cd build && \
cmake .. && \
make && \
make install
RUN git clone -b ${OSMIUM_TOOL_TAG} --single-branch https://github.com/osmcode/osmium-tool ./osmium-tool && \
git clone -b ${PROTOZERO_TAG} --single-branch https://github.com/mapbox/protozero ./protozero && \
git clone -b ${LIBOSMIUM_TAG} --single-branch https://github.com/osmcode/libosmium ./libosmium && \
cd osmium-tool && \
mkdir build && \
cd build && \
cmake -D WITH_LUAJIT=ON .. && \
make
FROM node:${NODE_VERSION} as buildApp
WORKDIR /tmp/buildApp
COPY ./package*.json ./
COPY .husky/ .husky/
RUN npm install
COPY . .
RUN npm run build
FROM ubuntu:20.04 as production
ENV NODE_ENV=production
ENV DEBIAN_FRONTEND=noninteractive
ENV workdir /app
ARG NODE_VERSION
WORKDIR ${workdir}
COPY --from=build /osm2pgsql/build /osm2pgsql
COPY --from=build /osmium-tool/build /osmium-tool/build
RUN ln -s /osm2pgsql/osm2pgsql /bin/osm2pgsql && ln -s /osmium-tool/build/osmium /bin/osmium
RUN apt-get update \
&& apt-get -yq install curl \
&& curl -L https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash \
&& apt-get -yq install nodejs libboost-filesystem-dev libpq-dev libproj-dev liblua5.3-dev libboost-program-options-dev libexpat1-dev dumb-init
COPY ./package*.json ./
COPY .husky/ .husky/
RUN npm ci --only=production
COPY --chown=node:node --from=buildApp /tmp/buildApp/dist .
COPY --chown=node:node ./config ./config
COPY start.sh .
RUN chgrp root ${workdir}/start.sh && chmod -R a+rwx ${workdir} && \
mkdir /.postgresql && chmod g+w /.postgresql
# uncomment while developing to make sure the docker runs on openshift
# RUN useradd -ms /bin/bash user && usermod -a -G root user
# USER user
ENTRYPOINT [ "/app/start.sh" ]