Google Cloud'da Java'da IronPDF'yi Çalıştırma
Google Cloud Functions üzerinde IronPDF for Java'yı dağıtmak, varsayılan olmayan bir yapılandırma gerektirir çünkü IronPDF, HTML'yi PDF'ye dönüştürmek için birleştirilmiş bir Chromium ikili dosyasına dayanır. Bu kılavuz, IronPDF'i Google Cloud Functions içinde özel bir Docker konteynerinde çalıştırmak için gereken her şeyi kapsar — doğru pom.xml bağımlılıklarından çalıştırma izinlerine ve kaynak ayarlarına kadar.
Zaten Google Cloud Functions ve Docker ile rahatça çalışıyorsanız bu bir sorun değildir. Yapılandırma değişiklikleri basittir: varsayılan işlev görüntüsünü özel bir Dockerfile ile değiştirin, Linux motor bağımlılığını ekleyin, kaynak sınırlarını ayarlayın ve çalışma dizinini ayarlayın. Her adım aşağıda açıklanmıştır.
Hızlı Başlangıç: IronPDF for Java'yı Google Cloud'a Dağıtın
Asgari çalışma yapılandırması, özel bir Dockerfile (çünkü varsayılan Bulut Fonksiyonu görüntülerinde Chrome'un sistem bağımlılıkları eksik) ve ironpdf-engine-linux-x64 eserinizi pom.xml içine yerleştirmenizi ve /tmp/ gösteren bir çalışma dizini gerektirir. Aşağıdaki kod, işlev giriş noktasında motor çalışma dizinini nasıl ayarlayacağınızı gösterir:
:path=/static-assets/pdf/content-code-examples/tutorials/google-cloud/configure-working-directory.java
import com.ironsoftware.ironpdf.Settings;
import java.nio.file.Paths;
// Point IronPDF at a writable directory in the Cloud Function runtime
Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));
Çalışma dizinini ayarladıktan sonra, IronPDF motoru, kısa ömürlü dosya sistemi içinde çıkarabilir ve çalıştırabilir. /tmp/ dizini, çoğu Google Cloud Function çalışma zamanında mevcut olan tek yazılabilir, çalıştırılabilir yoldur.
İçindekiler
- Varsayılan Bulut İşlevi Görüntüleri Neden Çalışmaz?
- Google Cloud için Özel Bir Dockerfile Nasıl Oluşturulur?
- Google Cloud Dağıtımı İçin pom.xml Nasıl Yapılandırılır?
- Maven Shade Eklentisi Nasıl Eklenir?
- İsteğe Bağlı gRPC Bağımlılıkları Nasıl Eklenir?
- Google Cloud Functions için Kaynak Sınırları Nasıl Ayarlanır?
- Çalışma Dizini ve Dosya İzinleri Nasıl Yapılandırılır?
- Bir Sonraki Adımlar Nelerdir?
Varsayılan Bulut İşlevi Görüntüleri Neden Çalışmaz?
Varsayılan Google Cloud Function çalışma zamanı görüntüleri, yalnızca yaygın dillerde yazılmış işlev kodunu çalıştırmak için gereken paketleri içerir. IronPDF'in Chromium tabanlı işleme motoru, varsayılan görüntülerde bulunmayan daha geniş bir Linux sistem kütüphaneleri setine (fontlar, grafik kütüphaneleri, sanal alan araçları) bağlıdır.
Google, her çalışma zamanı için kullanılabilir sistem paketlerinin tam bir listesini Google Cloud Functions sistem paketleri referansında yayınlar. Chromium'un bağımlılıkları standart 2. nesil çalışma zamanlarının hiçbirine dahil edilmemiştir. IronPDF motorunu varsayılan görüntüde yüklemeye çalışmak, başlangıçta yerel kütüphane yükleme hatasına neden olur.
Çözüm, fonksiyon ikili dosyası eklenmeden önce bu paketleri açıkça kuran özel bir Docker görüntüsü oluşturmaktır. Bu yaklaşım, Google Cloud Functions tarafından tam olarak desteklenir ve yerel ikili dosyalar gerektiren herhangi bir fonksiyon için önerilen aynı stratejidir. Dahil edilecek paketlerin tam listesi için IronPDF Linux dağıtım kılavuzuna başvurun.
Google Cloud için Özel Bir Dockerfile Nasıl Oluşturulur?
Özel bir Dockerfile, çalışma ortamı üzerinde tam kontrol sağlar. Resmi Google Cloud Functions Java tabanlı görüntüsünden başlayın, ardından Chromium'un gerektirdiği sistem kütüphanelerini yükleyin.
Aşağıdaki Dockerfile önerilen deseni gösterir. COPY ve CMD girişlerini fonksiyon projenizin ayrıntılarıyla değiştirin:
//:path=Dockerfile
# Use the official Google Cloud Functions Java 17 base image
FROM gcr.io/google-appengine/java17:latest
# Install Chrome system dependencies required by IronPDF's rendering engine
RUN apt-get update && apt-get install -y \
libglib2.0-0 \
libnss3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
# Grant execute permissions on /tmp so the IronPDF engine can extract there
RUN chmod 777 /tmp/
# Copy the compiled JAR and set the entry point
COPY target/your-function.jar /app/function.jar
CMD ["java", "-jar", "/app/function.jar"]
chmod 777 /tmp/ satırı gereklidir çünkü IronPDF, motor ikili dosyasını başlatma sırasında yazması ve çalıştırması gerekmektedir. Çalışma dizininde yürütme izni olmaksızın, motor başlatılamaz.
docker build ve docker run ile yerel olarak test edin. Yerel test, eksik bağımlılıkları erkenden yakalar ve yavaş bulut oluşturma döngülerinden kaçınır.Google Cloud Dağıtımı İçin pom.xml Nasıl Yapılandırılır?
Standart ironpdf Maven eseri, birden çok platform için motor ikili dosyalarını paketler. Google Cloud Functions (Linux x86-64 üzerinde çalışır) için, dağıtım görüntüsünü ince tutmak ve her zaman doğru ikili dosyanın kullanılmasını sağlamak için platforma özgü motor öğesini ekleyin:
//:path=pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>2024.9.1</version>
</dependency>
</dependencies>
//:path=pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>2024.9.1</version>
</dependency>
</dependencies>
Her zaman en son IronPDF for Java sürümüne sürüm numarasını güncelleyin. ironpdf-engine-linux-x64 eseri, çekirdek ironpdf eseri ile tam olarak eşleşmelidir.
Maven Shade Eklentisi Nasıl Eklenir?
Google Cloud Functions'a uber-JAR (büyük JAR) olarak dağıtırken, maven-shade-plugin tüm transit bağımlılıkların servis yükleyici dosyalarının düzgün bir şekilde birleştirildiğinden emin olur. Olmadan, bazı gRPC hizmet kayıtları sessizce düşebilir ve motorun başlatılamaz hale gelmesine neden olabilir.
<build><plugins> bölümüne aşağıdaki eklenti yapılandırmasını ekleyin:
//:path=pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
//:path=pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
ServicesResourceTransformer kritik parçadır. Java'nın ServiceLoader mekanizmasını kullanan gRPC, her bağımlılık JAR'ından META-INF/services/ girişlerini tek bir birleşik dosyada birleştirir, bu nedenle birleşik servis dosyaları, taşıma seçiminin (HTTP/2 ile düz metin) çalışma zamanında çalışması için gereklidir.
İsteğe Bağlı gRPC Bağımlılıkları Nasıl Eklenir?
Bazı dağıtım yapılandırmalarında — özellikle belirli Google Cloud Functions framework sürümleri kullanılırken gölgelendirilmiş bir JAR ile kullanılırken — gRPC taşıma bağımlılıkları gereklidir. Fonksiyon bir gRPC taşıma veya kanal hatası ile başlatılamazsa bunları ekleyin:
//:path=pom.xml
<dependencies>
<dependency>
<groupId>io.perfmark</groupId>
<artifactId>perfmark-api</artifactId>
<version>0.26.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-okhttp</artifactId>
<version>1.50.2</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.50.2</version>
</dependency>
</dependencies>
//:path=pom.xml
<dependencies>
<dependency>
<groupId>io.perfmark</groupId>
<artifactId>perfmark-api</artifactId>
<version>0.26.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-okhttp</artifactId>
<version>1.50.2</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.50.2</version>
</dependency>
</dependencies>
Çoğu durumda, grpc-netty-shaded'i dahil etmek üretim için yeterlidir. grpc-okhttp taşıma, görüntü boyutunu minimize etmenin öncelikli olduğu durumlarda yararlı, daha hafif bir alternatiftir. Sadece eksik izleme anotasyonları hakkında sınıf yolu uyarıları alırsanız perfmark-api ekleyin.
Google Cloud Functions için Kaynak Sınırları Nasıl Ayarlanır?
IronPDF, ilk çağrısı sırasında Cloud Function kapsayıcısı içinde bir Chromium alt sürecini başlatır. Chromium'un başlatılması ve ilk işleme belleği yoğundur ve motorun başlatılması için işlevin yeterince uzun süre canlı kalması gerekir. Cloud Functions için varsayılan kaynak limitleri güvenilir çalışma için çok düşüktür.
Fonksiyonu dağıtırken Google Cloud Console'da veya gcloud CLI aracılığıyla aşağıdaki sınırlamaları yapılandırın:
| Ayar | Önerilen Değer | Sebep |
|---|---|---|
| Zaman Aşımı | 330 saniye | Bir soğuk başlangıçta Chromium'un başlatılması 60–90 saniye sürebilir. Motor hazır olmadan önce işlev zaman aşımına uğramamalıdır. |
| Bellek | 2.048 MB veya daha yüksek | Chromium, karmaşık HTML sayfalarını işlemek için önemli miktarda RAM gerektirir. Yetersiz bellek, işlemin ortasında öldürülmesine neden olur. |
| Ephemeral Depolama | 1.024 MB veya daha fazla | Motor ikili dosyası ve geçici PDF dosyaları /tmp/ üzerinde yazılır. Düşük depolama, çıkartma veya yazma hatalarına neden olur. |
Bu değerler başlangıç noktalarıdır. Yüksek hacimli veya karmaşık PDF oluşturma, daha yüksek bellek tahsisleri gerektirebilir. Google Cloud Console'daki Cloud Function bellek kullanım metriklerini izleyin ve bellek hataları gözlemlerseniz sınırları artırın.
Çalışma Dizini ve Dosya İzinleri Nasıl Yapılandırılır?
IronPDF motoru, başlatma sırasında ikili dosyasını bir çalışma dizinine ayıklar. Google Cloud Functions üzerinde, tek yazılabilir ve çalıştırılabilir yol /tmp/. Herhangi bir IronPDF API çağrısından önce çalışma dizinini açıkça ayarlayın ve Dockerfile'ın o yol üzerinde gerekli izinleri verdiğinden emin olun.
İşlev giriş noktanızın üstüne aşağıdaki yapılandırma çağrısını ekleyin, herhangi bir PDF işleminden önce:
//:path=/static-assets/pdf/content-code-examples/tutorials/google-cloud/configure-working-directory.java
import com.ironsoftware.ironpdf.Ayars;
import java.nio.file.Paths;
public class PdfFunction {
static {
// Must be called before any IronPDF operation.
// /tmp/is the only writable and executable directory in Cloud Functions.
Ayars.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/google-cloud/configure-working-directory.java
import com.ironsoftware.ironpdf.Ayars;
import java.nio.file.Paths;
public class PdfFunction {
static {
// Must be called before any IronPDF operation.
// /tmp/is the only writable and executable directory in Cloud Functions.
Ayars.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));
}
}
Ardından, Dockerfile'ınıza karşılık gelen izin komutunu ekleyin:
//:path=Dockerfile
# Ensure the IronPDF engine can extract and run binaries from /tmp/
RUN chmod 777 /tmp/
static {} başlatıcı bloğu kullanmak, fonksiyonunuzdaki herhangi bir sınıfın IronPDF motorunu yüklemeye çalışmadan önce çalışma dizininin yapılandırıldığını garanti eder. Eğer bir örnek yöntemi veya istek işleyicide ayarlarsanız, başka bir iş parçacığının yol yapılandırılmadan önce motoru başlatma riski vardır.
Bir Sonraki Adımlar Nelerdir?
Bu kılavuz, IronPDF for Java'yı bir Google Cloud Function içinde özel bir Docker konteyneri kullanarak çalıştırma konfigürasyonunun tamamını kapsar. Anahtar noktalar şunlardır: Chrome sistem bağımlılıklarını yükleyen özel bir Dockerfile kullanın, ironpdf-engine-linux-x64 Maven eserini ekleyin, çalışma dizinini /tmp/ olarak yapılandırın, zaman aşımını en az 330 saniyeye ve belleği en az 2.048 MB'a ayarlayın ve servis yükleyici dosyalarını birleştirmek için maven-shade-plugin ekleyin.
IronPDF for Java'nın neler yapabileceğini daha fazla keşfetmek için IronPDF for Java belgelerine bakın veya bu kılavuzlardan birini deneyin:
- IronPDF for Java on Linux — Linux dağıtımları için Chrome bağımlılıklarının tam listesini anlayın
- IronPDF for Java on AWS Lambda — AWS için benzer Docker tabanlı dağıtım kılavuzu
- Java'da HTML'den PDF'e dönüştürme — İşlev mantığınız için temel işleme iş akışı
Ücretsiz deneme lisansı alın ve IronPDF for Java'yı Google Cloud ortamınızda test edin. Üretim dağıtımları için bir lisans anahtarı gereklidir. Yayınlamaya hazır olduğunuzda bir lisans satın alın.
Sıkça Sorulan Sorular
Neden varsayılan Google Cloud Function görüntüsü üzerinde IronPDF for Java başlatılamıyor?
Varsayılan Cloud Function çalışma zamanı görüntüleri, Chromium'un gerektirdiği libnss3, libatk1.0-0 ve ilgili grafik paketleri gibi Linux sistem kütüphanelerini içermez. IronPDF'in render motoru Chromium'u dahili olarak kullanır, bu yüzden bu bağımlılıkları açıkça yükleyen özel bir Dockerfile gereklidir.
Neden Google Cloud için IronPDF'de Zip Dağıtımı desteklenmiyor?
IronPDF'in çalışma zamanında yerel bir Chromium ikili dosyasını çıkarması ve çalıştırması gerekir. Zip Dağıtım modeli, yazılabilir, çalıştırılabilir bir dosya sistemi sağlamaz, bu yüzden motor ikili dosyasını çıkaramaz veya başlatamaz. Docker tabanlı bir dağıtım gereklidir.
Google Cloud Functions'da IronPDF için hangi Maven bağımlılığı gereklidir?
com.ironsoftware grubundan ironpdf-engine-linux-x64 öğesini pom.xml dosyanıza ekleyin. Sürüm numarası, çekirdek ironpdf öğesiyle tam olarak eşleşmelidir. Bu öğe, IronPDF'in rendering için kullandığı Linux x86-64 Chromium ikili dosyasını paketler.
Neden IronPDF for Java için maven-shade-plugin'e ihtiyaç var?
Bir uber-JAR olarak paketlenirken, maven-shade-plugin, ServicesResourceTransformer ile tüm bağımlılık JAR'larındaki META-INF/services/ dosyalarını birleştirir. Onsuz, gRPC servis kayıtları sessizce düşebilir ve bu da IronPDF motorunun başlatılamamasına neden olabilir.
IronPDF çalıştırmak için hangi süre aşımı ve bellek ayarları gereklidir?
Fonksiyon zaman aşımını 330 saniyeye, belleği en az 2048 MB'ye ve geçici depolamayı en az 1024 MB'ye ayarlayın. Soğuk açılışta Chromium başlatılması 60 ila 90 saniye sürebilir ve motor, karmaşık HTML sayfalarını render etme için önemli miktarda belleğe ihtiyaç duyar.
Neden Google Cloud'da Settings.setIronPdfEngineWorkingDirectory, /tmp/ öğesine işaret etmelidir?
/tmp/ dizini, birçok Google Cloud Function çalışma zamanında yazılabilir ve çalıştırılabilir tek yoldur. IronPDF, motor ikili dosyasını çıkarmak ve geçici dosyaları bu konumda yazmak zorundadır. Bu ayar olmadan motor, uygun bir çıkarma hedefi bulamaz ve başlatılamaz.
Neden Dockerfile'da RUN chmod 777 /tmp/gerekli?
IronPDF'in motor ikili dosyası hem yazılmalı hem de /tmp/'den çalıştırılmalıdır. Bazı temel görüntülerde varsayılan /tmp/ izinleri tüm kullanıcılar için çalıştırma izni içermez. chmod 777 komutu, fonksiyon çalışma zamanı kullanıcısının ikili dosyayı çıkartabilmesini ve çalıştırabilmesini sağlar.
grpc-okhttp ne zaman grpc-netty-shaded yerine kullanılmalı?
grpc-netty-shaded, daha eksiksiz bir HTTP/2 uygulaması sunduğu için üretim için önerilir. grpc-okhttp, Docker görüntü boyutunu küçültmek öncelik olduğunda daha hafif bir alternatiftir. Her iki taşıma da Google Cloud Functions üzerinde Java için IronPDF ile çalışır.


