我正在尝试从 Dockerfile 执行 mvn install,但它不起作用,说找不到 mvn

Dha*_*oot 5 build maven docker

我正在尝试执行“mvn install”以从 Dockerfile 创建 war 文件。波纹管是 Dockerfile

FROM scratch
FROM ubuntu:16.04

RUN mkdir /opt/java8
RUN mkdir /opt/tomcat8
RUN mkdir /opt/maven3

ENV JAVA_HOME /opt/java8
ENV CATALINA_HOME /opt/tomcat8

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin

ADD jdk1.8.0_112 /opt/java8
ADD apache-tomcat-8.0.38 /opt/tomcat8

WORKDIR /home/veni/git/M_UserTP
RUN mvn install

WORKDIR /home/veni/git/M_UserTP/target 
RUN mv M_UserTP.war 
/home/veni/Documents/dhaval_bhoot/docker_images/tomcat1

ADD M_UserTP.war /opt/tomcat8/webapps

EXPOSE 8080

CMD ["catalina.sh", "run"]
Run Code Online (Sandbox Code Playgroud)

我还在PATH环境变量中添加了maven的bin目录路径。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/veni/Documents /apache-maven-3.3.9/bin/

这个路径是我从机器中的 root 用户设置的,我还在 PATH 变量中添加了与普通用户相同的路径。

所以现在我退出 root 用户并通过 sudo su 返回 root 用户并检查 PATH 变量,它没有 maven 的路径

因此,当我对图像进行 docker 构建时,出现以下错误

/bin/sh: 1: mvn: 未找到 命令“/bin/sh -c mvn install”返回非零代码:127

小智 0

您的容器有自己的文件系统。因此,您的系统上可用的 mvn 二进制文件在基本 ubuntu 映像上不可用。

您应该首先将其安装在容器中(带有RUN apt-get install..)然后您将能够在下一次运行中使用它