Grails 3.1.4 und Andockfenster - grails-Kommandos return "Kein Profil gefunden für Namen web"
Habe ich eine einfache grails-app, die fein von selbst aus. Es hat nicht ein problem mit Hilfe der grails-web-Profil mit grails run-app
Jedoch, wenn ich ein docker image aus dem app, die grails Kommandos, wie grails run-app --stacktrace
oder grails dependency-report --stacktrace
geschickt, um docker schlägt mit stacktrace:
| Error Error occurred running Grails CLI: No profile found for name [web]. (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.IllegalStateException: No profile found for name [web].
at org.grails.cli.GrailsCli.initializeProfile(GrailsCli.groovy:507)
at org.grails.cli.GrailsCli.initializeApplication(GrailsCli.groovy:308)
at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:271)
at org.grails.cli.GrailsCli.main(GrailsCli.groovy:162)
| Error Error occurred running Grails CLI: No profile found for name [web].
Docker Build-Befehl:
Führen Sie von der Wurzel des grails-app.
Benutzer ist im Andockfenster Gruppe.
docker build -t mygrailsapp .
DockerFile:
(Build nicht AUSFÜHREN grails-Abhängigkeit-Bericht-stacktrace. Wenn ich zu entfernen diesen Befehl, der build abgeschlossen ist. Jedoch, das erste mal Sie die app laufen, mit default-Befehl scheitert mit der gleichen Fehlermeldung.)
#
# My Dockerfile
#
# https://github.com/dockerfile/java
# https://github.com/dockerfile/java/tree/master/oracle-java8
# https://hub.docker.com/r/mozart/grails/
# Pull base image.
FROM ubuntu
RUN apt-get update
# install apt-get-repository
RUN \
apt-get install -y software-properties-common wget unzip git
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
# Define working directory.
WORKDIR /data
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
# Set customizable env vars defaults.
# Set Grails version (default: 3.1.4; min: 3.0.0; max: 3.1.4).
ENV GRAILS_VERSION 3.1.4
# Install Grails
WORKDIR /usr/lib/jvm
# TODO put grails zips on your own server with decent bandwidth
RUN wget https://github.com/grails/grails-core/releases/download/v$GRAILS_VERSION/grails-$GRAILS_VERSION.zip && \
unzip grails-$GRAILS_VERSION.zip && \
rm -rf grails-$GRAILS_VERSION.zip && \
ln -s grails-$GRAILS_VERSION grails
# Setup Grails path.
ENV GRAILS_HOME /usr/lib/jvm/grails
ENV PATH $GRAILS_HOME/bin:$PATH
# Create App Directory
RUN mkdir /app
# Set Workdir
WORKDIR /app
# Copy App files
COPY . /app
# Run Grails dependency-report command to pre-download dependencies but not
# create unnecessary build files or artifacts.
RUN grails dependency-report --stacktrace
# Set Default Behavior
ENTRYPOINT ["grails"]
CMD ["run-app"]
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
Gradle 2.12
Docker
Client:
Version: 1.10.3
API-version: 1.22
Go, version: go1.5.3
Git commit: 20f81dd
Baujahr: Thu Mar 10 15:54:52 2016
OS/Arch: linux/amd64
- Was passiert, wenn Sie hinzufügen
--verbose
? - Hatte ich schon versucht --verbose. Leider es didn ' T fügen Sie keine neuen Informationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stand vor dem gleichen Problem, wenn ich zog mein Grails 3.1.4 Anwendung, die die
web
Profil auf eine neue Maschine.Tun
gradle clean
in meine Anwendung root-Verzeichnis ausgelöst Grails-Maven-Abhängigkeiten werden heruntergeladen und nach, dass diegrails
Befehl zu arbeiten begonnen.Ich es beheben mit der nächsten:
.gradle
Verzeichnisgradle
Verzeichnisbuild
VerzeichnisNun, ich kann laufen, die app mit
grails run-app
.No profile found for name [web]
aber nach dem löschen war ich wieder beijava.lang.ClassCastException: jdk.internal.loader.ClassLoaders$AppClassLoader (in module: java.base) cannot be cast to java.net.URLClassLoader (in module: java.base)
Habe ich dieses Problem durch löschen
build
- Datei. Durch löschen und erneut ausführen es kann das problem lösen.Wähle ich nur löschen, weil ich nicht einmal rufen grails-Funktion.
Finden Sie auf dieser https://mythinkpond.com/2016/11/29/grails-no-profile-found-for-name-web-illegalstateexception/
Für andere mit diesem Problem, ich habe gerade gelöscht (Bzw. verschoben, nur für den Fall, ich brauchte es wieder) mein build Ordner und dann lief es wieder neu heruntergeladen, alle Abhängigkeiten und arbeitete sofort
Zur Verbesserung der situation können Sie die GRADLE_USER_HOME env var, mit, dass Sie nicht haben, um rm du build-Verzeichnis jedes mal, wenn Sie laufen docker, kurz vor dem ersten mal, eigentlich mit löschen der build/.Abhängigkeiten-Datei funktioniert der trick
Bei mir funktionierte es, indem Sie mit dem Befehl
./gradlew install
nachgradle clean
undgrails
grails
Befehl installiert die Abhängigkeiten und./gradlew install
gelöst alle die später FehlerFand ich die Antwort. Ich musste zum herunterladen der grails-profile von github und installieren Sie Sie in $GRAILS_HOME. Ich legte diesen Schritt unmittelbar nach der Einstellung der Grails-Umgebung Variablen im Andockfenster-Datei.
Siehe Beispiel docker-Datei snippet unter:
No profile found for name [angular]
. Gibt es eine Möglichkeit, auf "aktualisieren" profile? Ich benutze dieser Basis-image.Entfernte ich LAUFEN Abhängigkeit-Bericht aus dem Dockerfile, und es das Problem behoben.
Dies bedeutet jedoch, dass die Abhängigkeiten nach der Installation nicht mehr in das Bild, und muss heruntergeladen werden, wenn der container zum ersten mal erstellt. Keine ideale situation.
Ich verstehe nicht, warum die web-Profil benötigt, auf die run-app Zeit. Ich dachte, das Profil diktiert die Vorlage verwendet, um die grails-Anwendung. Sobald das erledigt ist, warum ist es zur Laufzeit benötigt werden? Was genau ist der "web-Profil". Ist es eine einzelne Datei, die konnte man einfach heruntergeladen und Hinzugefügt?
Andere kuriosität ist, dass ein Bild erstellt VON mozart/grails , mit LAUF-Abhängigkeit-Bericht, läuft wunderbar auf das Andockfenster toolbox für windows, sondern schlägt auf das Andockfenster für linux. Ich verstehe nicht, wie das gleiche Bild hätte anders Verhalten auf verschiedenen docker-Plattformen. Ich dachte, dass war der Punkt, der Andockfenster.
Sorry für die Bereitstellung von mehr Fragen als Antworten hier, aber in der Hoffnung, um ein besseres Verständnis für all dies.