Das Hinzufügen einer Datei von der URL zum Docker-Image führt zu einem anderen Ergebnis, wenn Sie Volume verwenden

Synchronität

Ich möchte das Docker-Image der neuesten Version von Keycloak (14.0.0) mit Oracle JDBC verwenden, und soweit ich weiß, wird das jboss/keycloak:14.0.0Image nicht mit dem Oracle JDBC-Treiber geliefert .

Zuerst habe ich den Treiber dem richtigen Verzeichnis als Volume in einer docker-compose-Datei hinzugefügt.

  keycloak:
    image: jboss/keycloak:14.0.0
    ports:
      - 9080:8080
      - 9443:8443
    networks:
      - bifrost
    environment:
      ...
    volumes:
      - ./jdbc:/opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver
    depends_on:
      oracle-db:
        condition: service_healthy

Ich habe die Datei in das jdbcVerzeichnis heruntergeladen und das jar umbenannt, ojdbc.jarwie sie es in ihrer Beschreibung empfehlen.

Es hat gut funktioniert, bis ich versucht habe, es auf Remote zu verschieben, was vom Remote-Git-Host glorreich abgelehnt wird, weil die Dateigröße zu groß ist. Wir können dieses Limit nicht ändern, daher ist die beste Lösung, die ich finden kann, das Image zu erstellen, da der ADDBefehl Ressourcen aus dem Web abrufen und zum Image hinzufügen kann

Also mir fällt folgendes ein:

FROM jboss/keycloak:14.0.0

ADD https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.jar /opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver/ojdbc.jar

und die docker-sompose.yml:

  keycloak:
    build:
      context: ./keycloak
    ports:
      - 9080:8080
      - 9443:8443
    networks:
      - bifrost
    environment:
      ...
    depends_on:
      oracle-db:
        condition: service_healthy

Mit dieser Lösung konnte Keycloak jedoch nicht gestartet werden, es schlägt immer mit folgendem Fehler fehl

11:54:39,493 FATAL [org.keycloak.services] (ServerService Thread Pool -- 70) Fehler beim Start: java.lang.RuntimeException: Verbindung zur Datenbank fehlgeschlagen

Die Keycloak-Anwendung verhält sich also so, als wäre kein Oracle JDBC-Treiber vorhanden, sobald ich den Treiber wie zuvor als Volume wieder hinzufüge, funktioniert es einwandfrei.

Ich habe absolut keine Ahnung, warum das passiert, was ist der Unterschied zwischen den beiden Szenarien?

Nach meinem Wissen sollte es keinen Unterschied geben und sollte in beiden Fällen gut funktionieren.

Das Glas im jdbcVerzeichnis ist genau das gleiche, wie ich es im Dockerfile hinzufüge

Jan Garaj

Meine Vermutung:

https://docs.docker.com/engine/reference/builder/#add

Wenn <src> eine Remote-Datei-URL ist, hat das Ziel Berechtigungen von 600.

Prüfen:

$ ls -lah  /opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver/ojdbc.jar
-rw------- 1 root root 3.9M Feb 21  2020 /opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver/ojdbc.jar

Keycloak von offiziellen Docker-Images wird unter der Benutzer-ID ausgeführt 1000, nicht unter dem rootBenutzer. Keycloak kann also den heruntergeladenen Treiber nicht sehen und die Keycloak-Anwendung verhält sich, als wäre kein Oracle JDBC-Treiber vorhanden. Das ist ein Unterschied. Berechtigungen für die Treiberdatei.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv