Skip to content

Suggestions to improve Dockerfile - reduce image size #4986

Closed
@barakbd

Description

@barakbd

Is your feature request related to a problem? Please describe.

  1. Use node:carbon-alpine base image to reduce image size (unless you you really need the full size node image)

  2. Volumes:
    No need to mkdir + VOLUME. Also, it is possible to specify multi in one line
    https://docs.docker.com/engine/reference/builder/#volume

  3. Non-root user:
    https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user

  4. Entrypoint - use node and not npm
    https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#docker-run

  5. 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", "--"]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions