# Gunakan image dasar Golang versi 1.24.1 FROM golang:1.25.4 # Tambahkan user non-root untuk keamanan (optional tapi best practice) RUN useradd -m -u 1001 appuser # Set working directory WORKDIR /app # Copy go.mod dan go.sum COPY go.mod go.sum ./ # Download dependencies RUN go mod download # Copy seluruh kode COPY . . # Buat file .env dengan variabel environment menggunakan Hugging Face secrets RUN --mount=type=secret,id=DB_PASSWORD,mode=0444,required=false \ echo "DB_HOST=$(cat /run/secrets/DB_HOST 2>/dev/null)" >> .env && \ echo "DB_USER=$(cat /run/secrets/DB_USERNAME 2>/dev/null)" >> .env && \ echo "DB_PASSWORD=$(cat /run/secrets/DB_PASSWORD 2>/dev/null)" >> .env && \ echo "SUPABASE_URL=$(cat /run/secrets/SUPABASE_URL 2>/dev/null)" >> .env && \ echo "SUPABASE_SERVICE_KEY=$(cat /run/secrets/SUPABASE_SERVICE_KEY 2>/dev/null)" >> .env && \ echo "SUPABASE_BUCKET_NAME=quzuu-files" >> .env && \ echo "DB_PORT=5432" >> .env && \ echo "DB_NAME=postgres" >> .env && \ echo "SALT=NZNZtY7dNPz8l0dWINJZLKafWaJrql1s" >> .env && \ echo "JWT_SECRET_KEY=NZNZtY7dNPz8l0dWINJZLKafWaJrql1s" >> .env && \ echo "HOST_ADDRESS=0.0.0.0" >> .env && \ echo "HOST_PORT=7860" >> .env && \ echo "LOG_PATH=logs" >> .env && \ echo "EMAIL_VERIFICATION_DURATION=2" >> .env # Buat direktori audio dan logs, beri izin dan kepemilikan ke appuser RUN mkdir -p /app/images /app/logs /app/audio && \ chmod -R 777 /app/images /app/logs /app/audio && \ chown -R appuser:appuser /app/images /app/logs /app/audio # Build aplikasi RUN go build -o main . # Beralih ke user non-root USER appuser # Expose port untuk Hugging Face Spaces EXPOSE 7860 # Jalankan aplikasi CMD ["./main"]