Skip to main content

Dockerfile Templates for Node.js Frameworks

This guide helps you create suitable Dockerfiles for Node.js-based projects. We provide templates for popular frameworks such as Vue.js, React.js, Next.js, and Nuxt.js.

Key Points for All Dockerfiles

  1. Use official Node.js images
  2. Create a non-root user for enhanced security
  3. Use environment variables for greater flexibility
  4. Optimize for each specific framework
FROM node:$node_version

ARG UID=1000
ARG GID=1000

ENV PORT=3000
ENV HOSTNAME=0.0.0.0

RUN groupadd -g $GID -o app && \
useradd -g $GID -u $UID -mr -d /home/app -o -s /bin/bash app

USER app
WORKDIR /home/app
COPY --chown=app:app app/ /home/app/

RUN npm install
CMD [ "npx", "next", "start", "--hostname", "0.0.0.0", "-p", "$PORT" ]
info
  • This Dockerfile uses a single stage for Next.js, as Next.js requires Node.js at runtime.
  • The command npx next start is used to run the application.
caution
  • Make sure to replace $node_version with the appropriate Node.js version.
  • Set the PORT variable, which can be replaced in the advanced settings or project dashboard in the PaaS.

Building and Running the Dockerfile

To build the Dockerfile and create an image, use the command:

docker build -t [ProjectName] .
  • -t: Assign a specific tag and name for the project

Then, to run it:

docker run -p outport:inport[3000] --name=container-name -d [ProjectName]
  • -p: Specify the port for running the project
  • outport: External port
  • inport: Internal port of the project specified in the Dockerfile
  • --name: Specify the container name
  • -d: Run the container in detached mode
caution
  1. Security: Always use the latest stable versions of Node.js and Nginx.
  2. Testing: Before deploying to production, make sure to test your Docker image in a production-like environment.