Docker ile Konteyner Teknolojisine Giriş
Docker, uygulamalarınızı konteynerler içinde paketleyerek taşınabilir ve tutarlı çalışma ortamları sağlar.
Docker Nedir?
Docker, uygulamalarınızı ve bağımlılıklarını izole edilmiş konteynerlerde çalıştırmanızı sağlar.
Avantajları
- Taşınabilirlik: Her ortamda aynı şekilde çalışır
- İzolasyon: Her konteyner izole çalışır
- Hafif: VM’lere göre daha az kaynak kullanır
- Hızlı: Saniyeler içinde başlatma
Dockerfile Oluşturma
# Base image
FROM node:18-alpine
# Çalışma dizini
WORKDIR /app
# Dependencies'leri kopyala
COPY package*.json ./
RUN npm ci --only=production
# Uygulama kodunu kopyala
COPY . .
# Build
RUN npm run build
# Port
EXPOSE 3000
# Başlat
CMD ["npm", "start"]
Docker Compose
Multi-container uygulamalar için:
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://db:5432/myapp
depends_on:
- db
- redis
db:
image: postgres:15-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=myapp
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
Temel Komutlar
# Image build et
docker build -t myapp:latest .
# Konteyner çalıştır
docker run -p 3000:3000 myapp:latest
# Çalışan konteynerleri listele
docker ps
# Logları görüntüle
docker logs <container-id>
# Konteyner içine gir
docker exec -it <container-id> sh
# Temizlik
docker system prune -a
Docker Compose Komutları
# Başlat
docker-compose up -d
# Durdur
docker-compose down
# Loglar
docker-compose logs -f
# Rebuild
docker-compose up --build
Best Practices
1. Multi-stage Builds
# Build stage
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY package*.json ./
RUN npm ci --only=production
CMD ["node", "dist/index.js"]
2. .dockerignore Kullanın
node_modules
npm-debug.log
.git
.env
*.md
.vscode
3. Güvenlik
# Root yerine user kullanın
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nodejs -u 1001
USER nodejs
# Hassas bilgileri environment variable ile verin
ENV NODE_ENV=production
Docker ile uygulamalarınızı her ortamda tutarlı şekilde çalıştırın!