2025.03.03.
1
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.
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
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"]
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 .
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.
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.
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.