Description
Is your feature request related to a problem? Please describe.
-
Use node:carbon-alpine base image to reduce image size (unless you you really need the full size node image)
-
Volumes:
No need to mkdir + VOLUME. Also, it is possible to specify multi in one line
https://docs.docker.com/engine/reference/builder/#volume -
Non-root user:
https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user -
Entrypoint - use node and not npm
https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#docker-run -
Multi stage Dockerfile - reduce image size by building final image without devDependencies:
Docker multi stage - https://docs.docker.com/develop/develop-images/multistage-build/
TravisCI supported - Upgrade Docker for multi-stage build support travis-ci/travis-ci#8181
Suggestted Dockerfile
FROM node:carbon-alpine
#after this you can just use ./ to refer to cwd
WORKDIR /parse-server
#Specify multiple volumes in one line - reuse layers during build
VOLUME ["/parse-server/config", "/parse-server/cloud"]
#Copy into /parse-server which is current working directory
COPY ./ ./
RUN npm install && \
npm run build
ENV PORT=1337
EXPOSE $PORT
# non-root user
USER node
# start with node, not npm
ENTRYPOINT ["node", "./bin/parse-server", "--"]