CloudFoundry i JDK

Sep 17 2020

Zmagam się z wdrożeniem aplikacji Spring, która musi kompilować kod Java w czasie wykonywania. Moja aplikacja wywołuje polecenie javac, gdy użytkownik przesyła rozwiązanie problemu, dzięki czemu może później uruchomić java

Wdrażam w odlewni w chmurze i używam java-buildpack, ale niestety nie jest dostarczany z JDK, dostępny jest tylko JRE, a ta rzecz nie ma dostępnych poleceń javac ani java.

Czy wiecie, jak dodać JDK do odlewni w chmurze bez konieczności pisania własnego pakietu kompilacji.

Dzięki

Odpowiedzi

1 DanielMikusa Sep 18 2020 at 01:17

Sugerowałbym użycie obsługi multi-buildpack i użycie apt-buildpack do zainstalowania JDK. Powinien działać dobrze razem z JBP. Po prostu musi być pierwszy na liście.

https://github.com/cloudfoundry/apt-buildpack

Przykład:

  1. Utwórz apt.yml.

     ---
     packages:
     - openjdk-11-jdk-headless
    
  2. Pakiet, który do swojego JAR jar uf path/to/your/file.jar apt.yml. Powinien zostać dodany do katalogu głównego JAR, więc jeśli jar tf path/to/your/file.jarpowinieneś zobaczyć tylko apt.ymli nic przedrostkiem.

  3. Zaktualizuj swój plik manifest.yml. Najpierw dodaj apt-buildpack na liście.

     ---
     applications:
     - name: spring-music
       memory: 1G
       path: build/libs/spring-music-1.0.jar
       buildpacks:
       - https://github.com/cloudfoundry/apt-buildpack#v0.2.2
       - java_buildpack
    
  4. Wtedy cf push. Powinieneś zobaczyć uruchomienie apt-buildpack i zainstalować JDK. Zostanie wtedy zainstalowany pod ~/deps/0/lib/jvm/java-11-openjdk-amd64. Wydaje się, że nie kończy się na PATH, więc użyj pełnej ścieżki do ścieżki javaclub zaktualizuj ją.