React Academy · Oppitunti

React/Next.js-sovelluksen Dockerisointi

Kirjoittakaa Next.js-sovellukselle monivaiheinen Dockerfile ja suorittakaa se paikallisesti Docker Composella.

Oppitunti 3/412 vaihetta

React/Next.js-sovelluksen Dockerisointi on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Miksi Docker?

Docker-säilöt paketoivat sovelluksen ja sen riippuvuudet yhteen, mikä varmistaa yhdenmukaisen toiminnan kehitys-, esikatselu- ja tuotantoympäristöissä. Sama näköistiedosto toimii kaikkialla.

Tavallisen React-SPA:n Dockerfile

Kaksivaiheinen koonti: Node.js koontiin ja Nginx staattisen tuotoksen tarjoiluun.

# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: Serve with Nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Nginx-määritys SPA-reititystä varten

Määrittäkää Nginx tarjoamaan index.html kaikille reiteille (asiakaspuolen reitityksen tuki).

# nginx.conf
server {
  listen 80;
  root /usr/share/nginx/html;
  index index.html;

  location / {
    try_files $uri $uri/ /index.html; # SPA routing
  }

  location ~* \.(js|css|png|jpg|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
  }
}

Next.js:n standalone-tilan Dockerfile

Next.js 12 ja uudemmat versiot tukevat asetusta output: 'standalone', joka kopioi vain tarvittavat tiedostot ja tuottaa mahdollisimman pienen tuotantokuvan.

// next.config.js
module.exports = { output: 'standalone' };

# Dockerfile (Next.js standalone)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

.dockerignore

Jättäkää tarpeettomat tiedostot Docker-koontikontekstin ulkopuolelle koontien nopeuttamiseksi ja kuvan koon pienentämiseksi.

node_modules
.next
dist
.env*
.git
README.md
*.test.ts

Kuvan koonti ja suoritus

Kootkaa kuva ja suorittakaa se paikallisesti.

# Build:
docker build -t my-next-app .

# Run:
docker run -p 3000:3000 -e DATABASE_URL=postgres://... my-next-app

# Check size:
docker images my-next-app

Docker Compose paikallista kehitystä varten

Käyttäkää Docker Composea sovelluksen ja sen riippuvuuksien (tietokanta, Redis) suorittamiseen yhdellä komennolla.

# docker-compose.yml
services:
  web:
    build: .
    ports: ['3000:3000']
    environment:
      DATABASE_URL: postgresql://postgres:password@db:5432/myapp
    depends_on: [db]
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Terveystarkistukset

Lisätkää Dockerfileen terveystarkistus, jotta orkestroijat tietävät, milloin kontti on valmis.

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:3000/api/health || exit 1

Ympäristömuuttujat ajon aikana

Välittäkää ympäristömuuttujat docker run-komennon yhteydessä tai käyttämällä --env-file-valitsinta. Älkää koskaan sisällyttäkö salaisuuksia kuvaan.

docker run -p 3000:3000 \
  --env-file .env.production \
  my-next-app

Monialustaiset koonnit

Kootkaa Docker Buildxilla kuvia useille suoritinarkkitehtuureille (ARM64 M1-Mac-tietokoneille ja pilven virtuaalikoneille, AMD64 useimmille palvelimille).

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myregistry/my-next-app:latest \
  --push .

Pikatarkistus

Mikä hyöty React/Next.js-sovelluksen monivaiheisista Docker-koonneista on?

Kertaus

Käyttäkää monivaiheisia Dockerfile-tiedostoja: Node.js koontiin ja Nginx tai node:alpine tarjoiluun. Lisätkää Next.js-määritykseen output: 'standalone' minimaalisten kuvien luomiseksi. Käyttäkää Docker Composea paikalliseen kehitykseen, välittäkää salaisuudet ajon aikana ympäristömuuttujina ja kootkaa Buildxilla monialustaisia kuvia ARM- ja AMD64-yhteensopivuutta varten.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”React/Next.js-sovelluksen Dockerisointi” ilmainen?

Kyllä – oppitunnin ”React/Next.js-sovelluksen Dockerisointi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”React/Next.js-sovelluksen Dockerisointi”?

Kirjoittakaa Next.js-sovellukselle monivaiheinen Dockerfile ja suorittakaa se paikallisesti Docker Composella. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”React/Next.js-sovelluksen Dockerisointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Julkaiseminen Verceliin: nollamääritykset ja preview-URL-osoitteet
  2. React-SPA:n hostaus AWS S3:ssa ja CloudFrontissa
  3. React/Next.js-sovelluksen Dockerisointi
  4. GitHub Actionsin CI/CD Reactille
← Takaisin: React Academy