我想在容器内运行gradle构建,然后使用其配置文件和服务器参数执行jar。这就是我所拥有的
WORKDIR /app
COPY . /app
RUN chmod +x gradlew \
&& gradle build
COPY config/*.yml build/libs
RUN cd build/libs \
&& ls -la
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "/app/build/libs/app.jar", "-Dconfig.location=app/build/libs/config.yml", "-Dgrails.env=prod"]
我可以看到yml文件和jar文件都在build libs文件夹中,但是当我构建dockerfile时,出现错误,指示缺少yml文件。当我重新排序它们并将配置位置放在jar文件之前时,它会找到配置,但不执行jar文件。当我故意将不正确的路径放置到jar文件时,出现一个错误,提示找不到jar。docker 运行后我得到的是
Configuring Spring Security Core ...
... finished configuring Spring Security Core Configuring Spring Security REST 2.0.0.RC1...
... finished configuring Spring Security REST
就是这样。虽然在本地运行,但我也会获得“正在运行的应用程序”。任何帮助表示赞赏!
最佳答案
我是新手,因此无法发表评论。
我看到您在运行时位于build / libs中,
RUN cd build/libs
然后您的ENTRYPOINT命令正在使用相对路径作为配置位置-"-Dconfig.location=app/build/libs/config.yml"
您可以尝试使用“/ app”而不是“app”开始位置。另外,如果这没有帮助,您能否粘贴您提到的2种情况下出现的确切错误?
关于java - 带有yml配置文件的gradle jar文件未从dockerfile执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62836631/