React/Next.js-sovelluksen Dockerisointi
Kirjoittakaa Next.js-sovellukselle monivaiheinen Dockerfile ja suorittakaa se paikallisesti Docker Composella.
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.tsKuvan 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-appDocker 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 1Ympä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-appMonialustaiset 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.
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
- Julkaiseminen Verceliin: nollamääritykset ja preview-URL-osoitteet
- React-SPA:n hostaus AWS S3:ssa ja CloudFrontissa
- React/Next.js-sovelluksen Dockerisointi
- GitHub Actionsin CI/CD Reactille