Merge pull request #457 from joakimfors/master

Streamline Dockerfile for caching and size
This commit is contained in:
Petr Sloup 2020-12-11 16:13:55 +01:00 committed by GitHub
commit 51baa9b67b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 29 deletions

View file

@ -1,7 +1,6 @@
.git *
docs/_build !src
node_modules !public
test_data !package.json
light !package-lock.json
config.json !docker-entrypoint.sh
*.mbtiles

View file

@ -1,30 +1,55 @@
FROM node:10-stretch FROM node:10-buster AS builder
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get -qq update \
&& apt-get -y --no-install-recommends install \
apt-transport-https \
curl \
unzip \
build-essential \
python \
libcairo2-dev \
libgles2-mesa-dev \
libgbm-dev \
libllvm7 \
libprotobuf-dev \
&& apt-get -y --purge autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY . /usr/src/app
ENV NODE_ENV="production"
RUN cd /usr/src/app && npm install --production
FROM node:10-buster-slim AS final
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get -qq update \
&& apt-get -y --no-install-recommends install \
libgles2-mesa \
libegl1 \
xvfb \
xauth \
&& apt-get -y --purge autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/src/app /app
ENV NODE_ENV="production" ENV NODE_ENV="production"
ENV CHOKIDAR_USEPOLLING=1 ENV CHOKIDAR_USEPOLLING=1
ENV CHOKIDAR_INTERVAL=500 ENV CHOKIDAR_INTERVAL=500
VOLUME /data VOLUME /data
WORKDIR /data WORKDIR /data
EXPOSE 80
ENTRYPOINT ["/bin/bash", "/usr/src/app/run.sh"]
RUN apt-get -qq update \ EXPOSE 8000
&& DEBIAN_FRONTEND=noninteractive apt-get -y install \
apt-transport-https \
curl \
unzip \
build-essential \
python \
libcairo2-dev \
libgles2-mesa-dev \
libgbm-dev \
libllvm3.9 \
libprotobuf-dev \
libxxf86vm-dev \
xvfb \
x11-utils \
&& apt-get clean
RUN mkdir -p /usr/src/app USER node:node
COPY / /usr/src/app
RUN cd /usr/src/app && npm install --production ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["-p", "8000"]

23
docker-entrypoint.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/sh
set -e
handle() {
SIGNAL=$(( $? - 128 ))
echo "Caught signal ${SIGNAL}, stopping gracefully"
kill -s ${SIGNAL} $(pidof node) 2>/dev/null
}
trap handle INT TERM
if ! which -- "${1}"; then
# first arg is not an executable
xvfb-run -a --server-args="-screen 0 1024x768x24" -- node /app/ "$@" &
# Wait exits immediately on signals which have traps set. Store return value and wait
# again for all jobs to actually complete before continuing.
wait $! || RETVAL=$?
wait
exit ${RETVAL}
fi
exec "$@"