CloudFoundry und JDK

Sep 17 2020

Ich habe Probleme mit der Bereitstellung einer Spring-App, die zur Laufzeit Java-Code kompilieren muss. Meine App ruft den Befehl javac auf, wenn ein Benutzer eine Lösung für ein Problem vorlegt, damit er später Java ausführen kann

Ich stelle in der Cloud-Gießerei bereit und verwende das Java-Buildpack, aber leider wird es nicht mit JDK geliefert, nur JRE ist verfügbar und für dieses Ding sind keine Java- oder Java-Befehle verfügbar.

Kennt ihr einen Weg, wie man JDK zur Cloud-Gießerei hinzufügt, ohne mein eigenes benutzerdefiniertes Buildpack schreiben zu müssen?

Vielen Dank

Antworten

1 DanielMikusa Sep 18 2020 at 01:17

Ich würde vorschlagen, dass Sie die Unterstützung für mehrere Buildpacks verwenden und das apt-buildpack verwenden, um ein JDK zu installieren. Es sollte neben dem JBP gut funktionieren. Es muss nur an erster Stelle in der Liste stehen.

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

Beispiel:

  1. Erstellen Sie eine apt.yml.

     ---
     packages:
     - openjdk-11-jdk-headless
    
  2. Bündeln Sie das in Ihrem JAR , jar uf path/to/your/file.jar apt.yml. Es sollte zum Stammverzeichnis der JAR hinzugefügt werden. Wenn Sie also jar tf path/to/your/file.jarnur sehen apt.ymlund nichts vorangestellt haben sollten.

  3. Aktualisieren Sie Ihre manifest.yml. Fügen Sie das apt-buildpack zuerst in die Liste ein.

     ---
     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. Dann cf push. Sie sollten sehen, wie das apt-buildpack ausgeführt wird, und das JDK installieren. Es wird dann unter installiert ~/deps/0/lib/jvm/java-11-openjdk-amd64. Es scheint auch nicht auf dem Pfad zu landen. Verwenden Sie daher einen vollständigen Pfad zum Pfad javacoder aktualisieren Sie ihn.