Dockerfile Template for Next.js Framework
This guide helps you create suitable Dockerfile for Next.js-based projects.
Key Points for All Dockerfiles
- Use official Node.js images
- Create a non-root user for enhanced security
- Use environment variables for greater flexibility
- 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 projectoutport
: External portinport
: Internal port of the project specified in the Dockerfile--name
: Specify the container name-d
: Run the container in detached mode
caution
- Security: Always use the latest stable versions of Node.js and Nginx.
- Testing: Before deploying to production, make sure to test your Docker image in a production-like environment.