Files
AuthCentral/PRODUCTION_WEBP.md
Beyhan Oğur 8b1fbdee99 first commit
2026-04-26 21:37:58 +03:00

223 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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!** 🚀