DEV Community

Cover image for ๐Ÿš€ Dockerize Your Next.js App for CI/CD & Deployment \[Complete Guide]
Raj Aryan
Raj Aryan

Posted on

๐Ÿš€ Dockerize Your Next.js App for CI/CD & Deployment \[Complete Guide]

Want to deploy your Next.js app like a pro? This post will help you Dockerize your app and set up a seamless CI/CD pipeline using GitHub Actions, then deploy it to any cloud provider or server.


๐Ÿงฑ 1. Start with Your Next.js App

npx create-next-app my-nextjs-app
cd my-nextjs-app
Enter fullscreen mode Exit fullscreen mode

๐Ÿ“ฆ 2. Create a Production-Ready Dockerfile

FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM node:18-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
CMD ["npm", "start"]
Enter fullscreen mode Exit fullscreen mode

๐Ÿ“‚ 3. Add a .dockerignore

node_modules
.next/cache
Dockerfile
.dockerignore
Enter fullscreen mode Exit fullscreen mode

๐Ÿงช 4. Test Locally

docker build -t my-nextjs-app .
docker run -p 3000:3000 my-nextjs-app
Enter fullscreen mode Exit fullscreen mode

๐Ÿค– 5. GitHub Actions CI/CD Workflow

Create .github/workflows/deploy.yml:

name: Deploy

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: docker/setup-buildx-action@v3
      - uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - run: |
          docker build -t myuser/nextjs-app:${{ github.sha }} .
          docker push myuser/nextjs-app:${{ github.sha }}
      - uses: appleboy/ssh-action@v1.0.0
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          script: |
            docker pull myuser/nextjs-app:${{ github.sha }}
            docker stop nextjs-app || true
            docker rm nextjs-app || true
            docker run -d -p 3000:3000 --name nextjs-app myuser/nextjs-app:${{ github.sha }}
Enter fullscreen mode Exit fullscreen mode

โ˜๏ธ 6. Where Can You Deploy?

  • VPS (DigitalOcean, Linode, etc.)
  • Render / Railway
  • AWS ECS + ECR
  • Google Cloud Run
  • Fly.io

โœ… Summary

With this setup:

  • You Dockerize your Next.js app
  • Automate builds & deployment via CI/CD
  • Ensure portability, consistency, and scalability

๐Ÿ‘‰ Read the Full Guide on Medium

This was a quick overview. For detailed steps, visuals, and pro tips:

๐Ÿ“– Read full tutorial here


Let me know in the comments how you deploy your Next.js apps or if you'd like a version with PostgreSQL, Redis, or NGINX reverse proxy! ๐Ÿณ๐Ÿ’ฅ

Top comments (0)