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-appFrontend + 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 --buildFejlesztő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 devGyors 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 psRövid összefoglaló
- Bind mount devhez ideális, de
node_modulesne legyen felülírva. - Compose egy paranccsal indít komplett stacket.
- Lokális DB/Redis gyorsan indítható
docker run-nal.