A co jeżeli nasz ulubiony język lub platforma nie są obsługiwane przez Google App Engine?
Przypomnijmy, że Google App Engine Standard potrafi uruchamiać serwisy napisane dla następujących platform:
-
Go
-
Java
-
Node.js
-
PHP
-
Python
-
Ruby
Dodatkowo, środowisko Flexible wspiera obsługę .NET
Co zrobić, jeżeli serwis, który chcemy opublikować powstał w technologii, której nie ma na powyższej liście, albo wersja platformy, która jest oferowana przez GAE nam nie odpowiada?
Z pomocą przychodzi oferowana przez środowisko Flexible możliwość publikacji kontenera utworzonego na podstawie własnego pliku Dockerfile.
Przetestujmy to na przykładzie.
Załóżmy, że mamy fantazję opublikować serwis, wykorzystujący dostarczony przez JDK 19 serwer HTTP.
W tym celu zaczynamy od stworzenia prostego pliku Dockerfile
FROM eclipse-temurin:19.0.1_10-jre COPY site site WORKDIR /site CMD ["jwebserver", "-b", "0.0.0.0", "-p", "8080"]
Bazuje on na obrazie pochodzącym z projektu Eclipse Temurin™. W pierwszym kroku kopiuje zawartość strony html do katalogu roboczego, który będzie publikowany przez serwer HTTP. Następnie, uruchamia go w taki sposób, żeby nasłuchiwał na wszystkich interfejsach oraz porcie 8080.
Tak stworzony Dockerfile, do wdrożenia na środowisko GAE Flexible potrzebuje jeszcze pliku app.yaml.
Może on wyglądać następująco:
runtime: custom env: flex manual_scaling: instances: 1 service: gae-flexible-docker
Tak przygotowany przykład, zakładając, że posiadamy już skonfigurowany projekt w środowisku GCP uruchamiamy poleceniem:
$ gcloud app deploy
Podsumowując
Na środowisku GAE Flexible możemy uruchomić dowolną skonteneryzowaną aplikację serwerową.
Jedynym warunkiem jest tak na prawdę to, żeby nasłuchiwała na porcie 8080.
Kompletny kod dla powyższego przykładu znajduje się tutaj.