forked from acalcutt/tileserver-gl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
127 lines (113 loc) · 4.08 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
122
123
124
125
126
127
FROM ubuntu:23.04 AS builder
ENV NODE_ENV="production"
RUN set -ex; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get -qq update \
&& apt-get upgrade -y \
&& apt-get -y --no-install-recommends install \
apt-transport-https \
curl gnupg \
unzip \
build-essential \
ca-certificates \
wget \
pkg-config \
xvfb \
python3 \
libgles2-mesa-dev \
libgbm-dev \
libprotobuf-dev \
libglfw3-dev \
libuv1-dev \
libjpeg-turbo8 \
libcairo2-dev \
libpango1.0-dev \
libjpeg-dev \
libgif-dev \
librsvg2-dev \
gir1.2-rsvg-2.0 \
librsvg2-2 \
librsvg2-common \
libcurl4-openssl-dev \
libpixman-1-0 lzma lzma-dev \
libpixman-1-dev; \
mkdir -p /usr/src/app; \
mkdir -p /etc/apt/keyrings; \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; \
apt-get update && apt-get install -y nodejs; \
curl http://archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2019c-3ubuntu1_all.deb --output tzdata_2019c-3ubuntu1_all.deb \
&& curl http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2.1_amd64.deb --output libicu66_66.1-2ubuntu2.1_amd64.deb \
&& apt install ./tzdata_2019c-3ubuntu1_all.deb \
&& apt install ./libicu66_66.1-2ubuntu2.1_amd64.deb \
&& rm -rf ./libicu66_66.1-2ubuntu2.1_amd64.deb \
&& rm -rf ./tzdata_2019c-3ubuntu1_all.deb; \
apt-get -y --purge autoremove; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*;
WORKDIR /usr/src/app
COPY . .
RUN npm install -g npm && npm install --omit=dev
FROM ubuntu:23.04 AS final
ENV \
NODE_ENV="production" \
CHOKIDAR_USEPOLLING=1 \
CHOKIDAR_INTERVAL=500
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN groupadd --gid 1001 node \
&& useradd --uid 1001 --gid node --shell /bin/bash --create-home node \
&& set -ex; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get -qq update && apt-get upgrade -y; \
apt-get -y --no-install-recommends install \
ca-certificates curl gnupg \
libgles2-mesa \
libegl1 \
wget \
xvfb \
xauth \
curl \
libglfw3 \
libuv1 \
libjpeg-turbo8 \
libcairo2 \
libgif7 \
libglfw3 \
libuv1-dev \
libc6-dev \
libcap2-bin \
libopengl0 \
libpixman-1-0 \
libcurl4 \
librsvg2-2 lzma \
libpango1.0; \
update-ca-certificates; \
mkdir -p /etc/apt/keyrings; \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; \
apt-get update && apt-get install -y nodejs; \
npm install -g npm; \
setcap 'cap_net_bind_service=+ep' /usr/bin/node \
&& curl http://archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2019c-3ubuntu1_all.deb --output tzdata_2019c-3ubuntu1_all.deb \
&& curl http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2.1_amd64.deb --output libicu66_66.1-2ubuntu2.1_amd64.deb \
&& apt install ./tzdata_2019c-3ubuntu1_all.deb \
&& apt install ./libicu66_66.1-2ubuntu2.1_amd64.deb \
&& rm -rf ./libicu66_66.1-2ubuntu2.1_amd64.deb \
&& rm -rf ./tzdata_2019c-3ubuntu1_all.deb \
&& apt-get -y remove wget curl; \
apt-get -y --purge autoremove; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/src/app /usr/src/app
RUN mkdir -p /data \
&& chown 1001:1001 -R /data \
&& chown -R 1001:1001 /usr/src/app \
&& chmod +x /usr/src/app/docker-entrypoint.sh \
&& chmod +x /usr/bin/node \
&& chown 1001:0 -R /usr/bin
VOLUME /data
WORKDIR /data
EXPOSE 8080
USER 1001:1001
ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"]
HEALTHCHECK CMD node /usr/src/app/src/healthcheck.js