diff --git a/.dockerignore b/.dockerignore index fee5276..2523191 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,6 @@ -.git -docs/_build -node_modules -test_data -light -config.json -*.mbtiles +* +!src +!public +!package.json +!package-lock.json +!run.sh diff --git a/Dockerfile b/Dockerfile index 4bc76b7..f51c688 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,59 @@ -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 \ + libxxf86vm-dev \ + xvfb \ + x11-utils \ + && apt-get -y --purge autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +#RUN mkdir -p /usr/src/app +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 \ + curl \ + libcairo2 \ + libgles2-mesa \ + libegl1 \ + libprotobuf17 \ + libxxf86vm1 \ + xvfb \ + x11-utils \ + && apt-get -y --purge autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /usr/src/app /usr/src/app ENV NODE_ENV="production" ENV CHOKIDAR_USEPOLLING=1 ENV CHOKIDAR_INTERVAL=500 + VOLUME /data WORKDIR /data + EXPOSE 80 -ENTRYPOINT ["/bin/bash", "/usr/src/app/run.sh"] -RUN apt-get -qq update \ -&& 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 -COPY / /usr/src/app -RUN cd /usr/src/app && npm install --production +ENTRYPOINT ["/usr/src/app/run.sh"]