Ich habe eine einfache Grails App, die für sich alleine gut läuft. Es hat kein Problem, das Grails-Webprofil mit grails run-app
Wenn ich jedoch ein Docker-Image aus der App heraus erstelle, schlagen die an docker gesendeten Grils-Befehle wie grails run-app --stacktrace
oder grails dependency-report --stacktrace
mit stacktrace fehl:
Docker Build Befehl: Läuft von der Wurzel der Grails-App. Der Benutzer befindet sich in der Andockgruppe.
%Vor%Docker-Datei: (Build wird bei RUN-Grals-Abhängigkeitsbericht --stacktrace fehlschlagen. Wenn ich diesen Befehl entferne, wird der Build abgeschlossen. Wenn die App zum ersten Mal mit dem Standardbefehl ausgeführt wird, schlägt sie jedoch mit demselben Fehler fehl.)
%Vor%Setup:
Ubuntu 14.04 LTS 64
Jave: Oracle JDK 1.8.0_77 64
Über sdkman 4.0.32:
Grails 3.14 Groovy 2.4.6 Gradel 2.12
Docker Klient: Version: 1.10.3 API-Version: 1.22 Go-Version: go1.5.3 Git commit: 20f81dd Errichtet: Do Mar 10 15:54:52 2016 OS / Arch: linux / amd64
Ich hatte das gleiche Problem, als ich meine Grails 3.1.4 Anwendung, die das web
Profil verwendet, auf eine neue Maschine verschoben habe.
Doing gradle clean
in meinem Anwendungsstammverzeichnis löste Grails-Maven-Abhängigkeiten aus, die heruntergeladen wurden und danach startete der grails
-Befehl.
Ich repariere es mit dem nächsten:
.gradle
Verzeichnis gradle
Verzeichnis build
Verzeichnis Jetzt kann ich die App mit grails run-app
ausführen.
Ich habe das gelöst, indem ich build
file gelöscht habe. Durch Löschen und erneutes Ausführen kann dieses Problem möglicherweise behoben werden.
Ich entscheide mich dafür, es einfach zu löschen, weil ich nicht einmal die Funktion "Grails" aufrufen kann.
Wahrscheinlich sind Sie auf dieser Seite gelandet, weil Sie nach dem Fehler in einer Suchmaschine gesucht haben und Sie hierher gebracht haben.
Symptom: Wenn Sie "grails" unter einem bestehenden Projekt ausführen, das Sie zuvor hatten (entweder auf einem anderen PC oder von einem Quellcode wie GIT oder SVN und Sie haben fälschlicherweise das Verzeichnis "build" eingefügt).
Siehe hierzu Ссылка
Um die Situation zu verbessern, können Sie die Umgebungsvariable GRADLE_USER_HOME setzen, so dass Sie jedes Mal, wenn Sie docker ausführen, nicht jedes Mal ein neues Verzeichnis erstellen müssen, bevor Sie die Datei build / .dependencies löschen
%Vor%Ich habe die Antwort gefunden. Ich musste die Grails-Profile von github herunterladen und in $ GRAILS_HOME installieren. Ich habe diesen Schritt sofort nach dem Setzen der Grails-Umgebungsvariablen in der Docker-Datei platziert.
Siehe Beispiel für das Docker-Datei-Snippet:
%Vor%Ich habe den RUN-Abhängigkeitsbericht aus der Docker-Datei entfernt und dieses Problem behoben.
Dies bedeutet jedoch, dass die Abhängigkeiten nicht mehr im Abbild installiert sind und beim Erstellen des Containers heruntergeladen werden müssen. Keine ideale Situation.
Ich verstehe nicht, warum das Webprofil zur Laufzeit benötigt wird. Ich dachte, das Profil diktierte die Vorlage, die zum Einrichten der Grails-Anwendung verwendet wurde. Wenn das erledigt ist, warum wird es zur Laufzeit benötigt? Was genau ist das "Webprofil". Ist es eine einzelne Datei, die einfach heruntergeladen und hinzugefügt werden könnte?
Eine weitere Kuriosität ist, dass ein Bild, das von mozart / grails mit RUN-Abhängigkeitsbericht erstellt wurde, in der Docker-Toolbox für Windows einwandfrei funktioniert, aber im Docker für Linux fehlschlägt. Ich verstehe nicht, wie das gleiche Bild auf verschiedenen Docker-Plattformen ein unterschiedliches Verhalten haben würde. Ich dachte, das war der Punkt von Docker.
Tut mir leid, dass ich hier mehr Fragen als Antworten gestellt habe, aber ich hoffe, dass ich all das besser verstehen kann.
Tags und Links gradle grails docker grails-3.1