Grails3.1.4和Docker-Grails命令返回;未找到名称为“web”的配置文件;
我有一个简单的grails应用程序,它本身运行良好。将grails web概要文件与Grails3.1.4和Docker-Grails命令返回;未找到名称为“web”的配置文件;,grails,gradle,docker,grails-3.1,Grails,Gradle,Docker,Grails 3.1,我有一个简单的grails应用程序,它本身运行良好。将grails web概要文件与grails run app 但是,当我从应用程序构建docker映像时,grails命令,例如grails run app--stacktrace或grails dependency report--stacktrace发送到docker的命令会因stacktrace而失败: | Error Error occurred running Grails CLI: No profile found for name
grails run app
但是,当我从应用程序构建docker映像时,grails命令,例如grails run app--stacktrace
或grails dependency report--stacktrace
发送到docker的命令会因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生成命令:
从grails应用程序的根目录运行。
用户在docker组中
docker build -t mygrailsapp .
DockerFile:
(在运行grails dependency report--stacktrace时,生成将失败。如果我删除该命令,生成将完成。但是,第一次使用默认命令运行应用程序时,它将失败,并出现相同的错误。)
设置:
Ubuntu 14.04 LTS 64
Jave:oraclejdk1.8.0Ṕ
通过sdkman 4.0.32:
圣杯3.14
Groovy 2.4.6
格拉德尔2.12
码头工人
客户:
版本:1.10.3
API版本:1.22
Go版本:go1.5.3
Git提交:20f81dd
建造时间:2016年3月10日星期四15:54:52
我找到了答案。我不得不从github下载grails配置文件并将它们安装在$grails\u HOME中。在docker文件中设置Grails环境变量之后,我立即执行了这一步骤 请参见下面的docker文件片段示例:
...
# Setup Grails path.
ENV GRAILS_HOME /usr/lib/jvm/grails
ENV PATH $GRAILS_HOME/bin:$PATH
# Setup grails profiles
RUN wget https://codeload.github.com/grails/grails-profile-repository/zip/master && \
unzip master && \
mv grails-profile-repository-master/profiles/ $GRAILS_HOME && \
rm -rf master && \
rm -rf grails-profile-repository-master
...
当我将使用
web
配置文件的grails3.1.4应用程序移动到一台新机器时,我遇到了同样的问题
在我的应用程序根目录中执行
gradle clean
触发了Grails Maven依赖项的下载,之后Grails
命令开始工作。对于其他有此问题的人,我只是删除了(或者只是移动了一下以防需要它)我的构建文件夹,然后再次运行,它重新下载了所有依赖项并立即工作我用next修复了它:
.gradle
目录gradle
目录build
目录现在,我可以使用
grailsrun-app
运行应用程序来改善这种情况,您可以设置GRADLE\u USER\u HOME
env-var,这样您就不必在第一次运行Docker之前每次运行rm
build目录,实际上,删除build/.dependencies
文件就可以做到这一点
VOLUME ["/gradle"]
ENV GRADLE_USER_HOME /gradle
我从Dockerfile中删除了运行依赖项报告,它解决了这个问题 但是,这意味着依赖项不再安装到映像中,必须在首次创建容器时下载。这不是一个理想的情况 我不明白为什么在运行应用程序时需要web配置文件。我认为概要文件规定了用于设置grails应用程序的模板。一旦完成,为什么在运行时需要它?“网络档案”到底是什么。它是一个可以下载并添加的单一文件吗 另一个奇怪之处是,从mozart/grails创建的带有运行依赖关系报告的映像在windows docker toolbox上运行良好,但在linux docker上运行失败。我不明白同一张图片在不同的docker平台上会有不同的行为。我以为这就是docker的重点
很抱歉,这里提供的问题比答案多,但希望能更好地理解所有这些。我已通过删除
构建
文件来解决此问题。通过删除并再次运行,可能会解决此问题
我选择删除它,因为我甚至不能调用grails函数
很可能是因为您在搜索引擎中搜索了错误,它将您带到了这里,所以您登录到了此页面
症状:当您在以前拥有的现有项目下运行“grails”时(在不同的PC上或从GIT或SVN之类的源代码管理运行,并且您错误地包含了“build”目录)
请参阅此为我介绍,它通过在
gradle clean
和grails
之后使用命令/gradlew install
工作
grails
命令安装了依赖项,并且/gradlew install
解决了所有后续错误添加--verbose
时会发生什么?我已经尝试过--verbose。不幸的是,它没有添加任何新信息。grails仍然抛出未找到名称[angular]
的配置文件。有没有办法“刷新”配置文件?我使用基本图像。处理我的问题。当我试图将grails与错误版本的vaadin插件一起使用时,我收到了错误消息(grails 3.1使用的是8:0.3而不是8:0.2),我没有找到名称[web]的配置文件,但删除后,我再次出现在java.lang.ClassCastException:jdk.internal.loader.ClassLoaders$AppClassLoader(在module:java.base中)不能转换为java.net.URLClassLoader(在module:java.base中)
当给出这样的建议时,请告诉我们为什么您认为它可以解决问题。@KalaBalik Hi kala,我认为提供链接就足够了。谢谢您的评论,我会尝试将其作为一个好习惯。谢谢朋友(顺便说一句,我已经更新了我的答案)谢谢你提供更多的信息。这可能会对某人有所帮助,但是,如果你不会得到最初提问者的太多关注,不要失望,因为这个问题是一年半前提出来的。
VOLUME ["/gradle"]
ENV GRADLE_USER_HOME /gradle