Next.js app futtatása Dockerben Ubuntu rendszer alatt

author
WebQuest

2025.03.03.

1

image

A Next.js alkalmazás Dockerben való futtatása lehetővé teszi, hogy egy konténerizált környezetben dolgozzunk, így biztosítva a különböző fejlesztési és gyártási környezetek közötti konzisztenciát. Az alábbi lépések segítségével könnyedén beállíthatjuk a Docker környezetet Ubuntu operációs rendszeren.

1. Telepítsük a Docker-t Ubuntu-ra

Először is, szükséges telepíteni a Docker-t. Ehhez az alábbi parancsokat futtathatjuk Ubuntu rendszerünkön:

sudo apt-get update


sudo apt-get install apt-transport-https ca-certificates


curl software-properties-common


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"


sudo apt-get update


sudo apt-get install docker-ce

A fenti parancsok telepítik a Docker-t és annak szükséges függőségeit Ubuntu rendszerünkre. Ellenőrizhetjük a telepítést a következő parancs segítségével:

docker --version

2. Hozzuk létre a Dockerfile-t

A Dockerfile a leíró fájl, amely tartalmazza a szükséges utasításokat a konténer image felépítéséhez. Az alábbi Dockerfile alapértelmezett beállításokat tartalmaz egy Next.js alkalmazáshoz:

FROM node:20-alpine AS base 

WORKDIR /app

COPY package.json package-lock.json ./

RUN npm install

COPY . .

RUN npm run build

CMD ["npm", "start"]

3. Docker image építése

Miután létrehoztuk a Dockerfile-t, elkészíthetjük a Docker image-t az alábbi parancs segítségével:

docker build -t nextjs-app .

4. Docker konténer indítása

Miután elkészült az image, elindíthatjuk a Docker konténert:

docker run -p 3000:3000 nextjs-app

Ezzel elérhetjük a Next.js alkalmazásunkat a helyi gépen a http://localhost:3000 címen.

5. Fejlesztés Docker konténerben

A Docker fejlesztési környezetben való használatakor célszerű megoldásokat alkalmazni a hatékonyabb munkavégzés érdekében, például volume-ok használatával a fájlok szinkronizálásához a konténer és a gazdagép között. Ehhez adjuk hozzá a következő parancsot a Dockerfile-hoz:

VOLUME ["/app"]

Ezzel biztosítjuk, hogy a helyi fájlok módosításai automatikusan tükröződjenek a konténerben, így nem szükséges újraépíteni az image-t minden egyes változtatás után.

6. PM2 cluster

Ha nagyobb teljesítményre van szükségünk, akkor célszerű a PM2 cluster módot használni. A cluster üzemmód segítségével több példányban futtathatjuk az alkalmazásunkat, így hatékonyabban kihasználhatjuk a gépünk több CPU magját. Ezzel a megoldással jobban kezelhetjük a magas terhelést és a skálázhatóságot.

Ehhez adjuk hozzá a következő parancsokat a Dockerfile-hoz, hogy PM2-t használjunk és több példányban futtassuk az alkalmazást:

FROM node:20-alpine AS base 

WORKDIR /app

COPY package.json package-lock.json ./

RUN npm install

RUN npm install pm2@latest -g

COPY . .

RUN npm run build

CMD ["pm2", "start", "npm", "--", "start", "--instances", "max", "--no-daemon"]

A fenti parancsok segítségével PM2-t telepítünk a Docker konténerbe, és a cluster módot aktiváljuk, hogy az alkalmazásunk maximálisan kihasználja a rendelkezésre álló CPU magokat. A --instances max beállítással annyi példányt indítunk, amennyit a rendszerünk lehetővé tesz, a --no-daemon pedig biztosítja, hogy a PM2 közvetlenül a konténerben fusson.