Maven 无法运行'/mvnw清洁安装&x27;基于“创建docker映像时”;openjdk:8-jdk-alpine“;用于Spring启动应用程序

Maven 无法运行'/mvnw清洁安装&x27;基于“创建docker映像时”;openjdk:8-jdk-alpine“;用于Spring启动应用程序,maven,docker,spring-boot,dockerfile,Maven,Docker,Spring Boot,Dockerfile,我想在docker容器中使用Spring.io.starter提供的maven包装器构建一个Spring启动应用程序。 我的Dockerfile是: FROM openjdk:8-jdk-alpine # install bash --> commented because I just need /bin/sh which is already provided by the base image #RUN apk add --no-cache bash ENV APP_DIR /app

我想在docker容器中使用Spring.io.starter提供的maven包装器构建一个Spring启动应用程序。 我的Dockerfile是:

FROM openjdk:8-jdk-alpine
# install bash --> commented because I just need /bin/sh which is already provided by the base image
#RUN apk add --no-cache bash
ENV APP_DIR /app
ENV APP app.jar
WORKDIR ${APP_DIR}
COPY . ${APP_DIR}
# ===> HERE THE PROBLEM
RUN /bin/sh -c "./mvnw clean install"
ENTRYPOINT ["java","-jar","chicowa-app.jar"]
EXPOSE 8080
我有一个错误:

/bin/sh: ./mvnw: not found
做了一些研究后,我仍然没有找到解决办法。 我的docker版本
Docker版本18.06.1-ce,在Windows10 pro上构建e68fc7a

非常感谢你的帮助

编辑
一个解决方案是直接安装maven,并运行apk add--no cache maven,但我希望尽可能减小映像的大小。

除非您在文件mvnw所在的确切位置运行脚本,否则它将无法工作

如果路径设置正确,并且Maven安装在合适的位置,只需删除命令前面的“/”即可

RUN /bin/sh -c “mvnw clean install”

如果mvnw不在您的路径中,您可以在脚本中指定完整路径(但要知道Maven可能会调用其他需要相同路径更改的东西)。

如果您已经配置了Maven,则可以运行以下操作:-

mvn clean install

它将无缝地构建docker映像。

我们仅在Windows 10上试验此问题,并且仅在应用dos2unix时就能够解决此问题

dos2unix mvnw

在windows10中构建Dockerfile时,我也遇到了同样的问题。 这是因为
mvnw
文件在行尾包含CRLF\r\n)我用记事本++打开它,用Find
\r\n
替换为
\n
(选中扩展(\n\r,…)。您可以使用dos2unix工具进行转换,正如@Juanan所说的那样


在此之后,构建运行不会出现问题。

如果您使用的是windows git,则可能会将mvnw文件的行尾更改为CRLF。如果您使用任何文本编辑器打开文件并将其保存到LF,则可能会工作。

使用

RUN chmod +x mvnw 
使用前

./mvnw clean install 

它将使您的mvnw文件可执行

这是有效的解决方案,因为我在任何地方都找不到此解决方案:

mvnw-版本 错误: java.security.InvalidalgorithParameterException:trustAnchors参数必须为 非空

根本原因: java信任存储中缺少maven公共证书

解决方案:

  • 从下载-repo.maven.apache.org叶证书,并以base64格式将其另存为repo_maven.cer文件
  • 将repo_maven.cer安装到cacerts(信任库)中 keytool-import-keystore“..\openjdk-8u41\jre\lib\security\cacerts”-文件“repo_maven.cer”-别名maven
  • 输出: mvnw-版本
    ApacheMaven 3.8.1(05C21C65BDFED0F71AF2ADA8B84DA59348C4C5D)

    Hmm${APP_DIR}
    ENV APP_DIR/APP
    这是复制所有文件的目录,我删除了
    /
    ,但结果相同。我不想安装Maven,你说的是什么意思“如果路径设置正确,并且Maven安装在合适的位置。。。"如果你还没有安装Maven,那么mvnw就不存在,你的问题也没有解决方案,这还不包括安装Maven。我想你不明白我的问题。看看这里关于
    Maven包装的内容,我确实误解了,也就是说,我不确定为什么该页面声称你不需要安装Maven。Thmaven wrapper的安装说明专门使用maven。没有它,您无法将其添加到项目中并下载所需的文件。cd您的_项目mvn-N io。takari:maven:wrapper祝您好运。我在我的PC上进行了测试,我从路径中删除了maven_主页,在我的项目中运行
    /mvnw clean install
    ,然后开始运行所以那个页面的作者是绝对正确的。同样的问题和替换行尾的工作是完美的。谢谢。