# 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 ```dockerfile 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 ```dockerfile 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 ```env 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) ```env DB_HOST=your-dokploy-postgres-host DB_PORT=5432 DB_USER=postgres DB_PASSWORD=your_password DB_NAME=gauth ``` ### Redis (Dokploy Managed) ```env 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 ```bash 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 ```bash # 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 ```bash # 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 ```bash # 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!** 🚀