Files
atahango/belgeler/PRODUCTION_WEBP.md
Beyhan Oğur bbbf76b184 first commit
2026-04-26 21:35:24 +03:00

4.9 KiB
Raw Permalink Blame History

Production Build - WebP Desteği

Değişiklikler

1. WebP Desteği Geri Eklendi

  • github.com/chai2010/webp dependency eklendi
  • Varsayılan avatar format: WebP
  • CGO enabled build

2. Docker Configuration

  • CGO_ENABLED=1 (WebP için gerekli)
  • libwebp-dev build dependency
  • libwebp runtime dependency
  • Static linking ile portable binary

3. docker-compose.prod.yml

  • Sadece uygulama servisi
  • PostgreSQL yok (Dokploy managed)
  • Redis yok (Dokploy managed)
  • Harici DB/Redis connection ayarları

📋 Dockerfile

Build Stage

FROM golang:1.25.6-alpine AS builder
WORKDIR /app

# WebP için gerekli build dependencies
RUN apk add --no-cache git gcc musl-dev libwebp-dev

COPY ../go.mod go.sum ./
RUN go mod download
COPY .. .
RUN go mod tidy

# Swagger
RUN go install github.com/swaggo/swag/cmd/swag@latest
RUN swag init

# CGO enabled build with static linking
RUN CGO_ENABLED=1 GOOS=linux go build -a \
    -ldflags '-linkmode external -extldflags "-static"' \
    -o main .

Runtime Stage

FROM alpine:latest
WORKDIR /app

# WebP runtime library + CA certificates
RUN apk --no-cache add ca-certificates libwebp

COPY --from=builder /app/main .
COPY --from=builder /app/.env .
COPY --from=builder /app/web ./web
COPY --from=builder /app/docs ./docs

EXPOSE 8080
CMD ["./main"]

🎯 Desteklenen Format'lar

Format Varsayılan Kalite Dosya Boyutu CGO Gerekli
WebP Evet Ayarlanabilir (0-100) En küçük Evet
JPEG Hayır Ayarlanabilir (1-100) Orta Hayır
PNG Hayır Lossless En büyük Hayır

📊 WebP Avantajları

Dosya Boyutu Karşılaştırması

Aynı kalitede:
- PNG:  100 KB
- JPEG:  50 KB
- WebP:  32 KB ✅ (~%35 daha küçük)

Browser Desteği

  • Chrome/Edge (tüm versiyonlar)
  • Firefox (tüm versiyonlar)
  • Safari 14+ (iOS 14+)
  • Opera (tüm versiyonlar)
  • ⚠️ IE11 (desteklenmez, fallback gerekebilir)

🔧 Environment Variables

Avatar Settings

AVATAR_H=150        # Height
AVATAR_W=150        # Width
AVATAR_Q=90         # Quality (0-100)
AVATAR_B=cover      # Mode (cover/contain/resize)
AVATAR_F=webp       # Format (webp/jpg/png)

Database (Dokploy Managed)

DB_HOST=your-dokploy-postgres-host
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=gauth

Redis (Dokploy Managed)

REDIS_HOST=your-dokploy-redis-host
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_USER=default

🚀 Deployment Workflow

1. Dokploy'da Servisler Oluştur

1. PostgreSQL Database
   - Version: 15
   - Username: postgres
   - Password: [güçlü şifre]
   - Database: gauth

2. Redis Cache
   - Version: 7
   - Password: [güçlü şifre]
   - Max Memory: 256MB

2. GitHub'a Push

git add .
git commit -m "Production: WebP support + external DB/Redis"
git push origin main

3. Dokploy'da Deploy

1. New Project → GitHub
2. Repository: your-repo
3. Branch: main
4. Build: Docker Compose
5. File: docker-compose.prod.yml
6. Environment Variables: (yukardaki tüm değişkenler)
7. Deploy!

4. İlk Admin Oluştur

# Container'a bağlan
docker exec -it app_auth_central /app/main seed-admin

# Varsayılan:
# Email: admin@gauth.local
# Password: Admin@123

🧪 Build Test

Local Test

# WebP dependency
go get github.com/chai2010/webp@latest
go mod tidy

# Local build (macOS/Linux)
go build -o main .

# Cross-compile for Linux
CGO_ENABLED=1 GOOS=linux go build -o main .

Docker Test

# Build
docker build -t authcentral .

# Run
docker run -p 8080:8080 \
  -e DB_HOST=your-db-host \
  -e REDIS_HOST=your-redis-host \
  authcentral

# Test
curl http://localhost:8080/

📝 Notlar

CGO Build

  • ⚠️ Cross-compile sınırlaması: CGO enabled olduğunda farklı OS'ler için compile etmek karmaşıktır
  • Docker ile çözüm: Docker builder her platformda Linux için build eder
  • Static linking: Binary portable, dependencies gömülü

Production Checklist

  • Dokploy'da PostgreSQL oluşturuldu
  • Dokploy'da Redis oluşturuldu
  • Tüm environment variables ayarlandı
  • OAuth credentials (Google, GitHub) ayarlandı
  • Email SMTP ayarları yapıldı
  • Domain DNS ayarları yapıldı
  • SSL sertifikası aktif
  • İlk admin kullanıcı oluşturuldu
  • Avatar upload test edildi
  • WebP support test edildi

🎉 Sonuç

AuthCentral WebP destekli ve Dokploy'a deploy için hazır!

  • WebP default format
  • CGO enabled build
  • Static linking
  • External PostgreSQL/Redis
  • Docker Compose production ready
  • Swagger documentation
  • Full API documentation

Dosya boyutları ~%35 daha küçük! 🚀