Uruchomienie skonteneryzowanej aplikacji serwerowej w środowisku Google App Engine Flexible

· 236 słów · do przeczytania, w minut 2

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.