Learning
Docker

Gyakorlati workflow példák

Node app konténerizálás, multi-service compose, hot reload dev setup, gyors adatbázis indítás.

Gyakorlati workflow példák

Node.js alkalmazás konténerizálása

Dockerfile példa:

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY src/ ./src/

EXPOSE 3000

USER node
CMD ["node", "src/index.js"]

Build és futtatás:

docker build -t my-node-app:1.0.0 .
docker run -d -p 3000:3000 --name my-app my-node-app:1.0.0
docker logs -f my-app

Frontend + backend + DB együtt futtatása

version: "3.8"

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend
    environment:
      - NEXT_PUBLIC_API_URL=http://backend:4000

  backend:
    build: ./backend
    ports:
      - "4000:4000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/appdb
      - JWT_SECRET=supersecret

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: appdb
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Indítás:

docker compose up -d --build

Fejlesztői környezet (hot reload)

version: "3.8"

services:
  app:
    build:
      context: .
      target: development
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development
    command: npm run dev

Gyors adatbázis setup lokálisan

docker run -d \
  --name local-postgres \
  -e POSTGRES_USER=dev \
  -e POSTGRES_PASSWORD=devpassword \
  -e POSTGRES_DB=mydb \
  -p 5432:5432 \
  postgres:15-alpine

docker run -d \
  --name local-redis \
  -p 6379:6379 \
  redis:7-alpine

docker ps

Rövid összefoglaló

  • Bind mount devhez ideális, de node_modules ne legyen felülírva.
  • Compose egy paranccsal indít komplett stacket.
  • Lokális DB/Redis gyorsan indítható docker run-nal.

On this page