Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Maven的Docker映像无法运行_Maven_Docker - Fatal编程技术网

带有Maven的Docker映像无法运行

带有Maven的Docker映像无法运行,maven,docker,Maven,Docker,我想在我的Docker图像中使用Maven 查看此处后,我尝试使用此Dockerfile: FROM openjdk:7 RUN apk add --no-cache curl tar bash ARG MAVEN_VERSION=3.3.9 ARG USER_HOME_DIR="/root" RUN mkdir -p /usr/share/maven /usr/share/maven/ref \ && curl -fsSL http://apache.osuosl.o

我想在我的Docker图像中使用Maven

查看此处后,我尝试使用此Dockerfile:

FROM openjdk:7

RUN apk add --no-cache curl tar bash

ARG MAVEN_VERSION=3.3.9
ARG USER_HOME_DIR="/root"

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
  && curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \
    | tar -xzC /usr/share/maven --strip-components=1 \
  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"

COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
COPY settings-docker.xml /usr/share/maven/ref/

VOLUME "$USER_HOME_DIR/.m2"

ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]
然而,我得到:

lstat mvn-entrypoint.sh: no such file or directory
我尝试了来自同一存储库的不同DockerFile,但它们都会抛出此错误

这个文件怎么了? 如何将Maven与Docker结合使用?

试试以下方法:

Dockerfile:-

FROM openjdk:8u111-jdk-alpine

COPY assets/settings.xml /tmp/settings.xml
ENV PATH=$PATH:/opt/maven/bin

RUN apk add --no-cache curl tar bash && \
  curl -SsL -o /tmp/maven.tar.gz http://www-us.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz && \
  mkdir -p /opt && \
  tar xzf /tmp/maven.tar.gz -C /opt/ && \
  ln -s /opt/apache-maven-3.3.9 /opt/maven && \
  rm /tmp/maven.tar.gz && \
  mv /tmp/settings.xml /opt/maven/conf/settings.xml
您需要将此Dockerfile放入一个新目录,其中包含一个名为“assets”的子目录,并且需要在该目录中放入一个maven设置文件(
settings.xml
)。如果没有自定义设置文件,请删除
副本
mv

用类似于

docker --tag ajava8 .
您可以在当前目录中运行maven,方法如下:

docker run -it --rm -v /$PWD:/work -w /work ajava8 mvn clean install
或者,您可以得到一个类似的bash shell,如下所示:

docker run -it --rm -v /$PWD:/work -w /work ajava8 bash

我刚刚遇到了同样的问题,我忘记下载“mvn entrypoint.sh”文件。。此外,还需要设置-docker.xml

您需要在Dockerfile
mvn entrypoint.sh
settings docker.xml
中复制文件。
你可以从git克隆

你在windows上吗?如果是,检查EOL。您是否有
mvn entrypoint.sh
位于正确的文件夹中?我在Windows上,但我正在使用Docker终端,因此我想这不是EOL问题。此外,我从未进入Docker容器,我只是尝试从图像构建它,因此,我认为在不正确的文件夹中没有问题。它失败于以下消息:
将构建上下文发送到Docker daemon 191.5 kB步骤1:从openjdk:7-->b3776fe72f6c步骤2:复制资产/settings.xml/tmp/settings.xml lstat资产/settings.xml:如果我删除
复制
move
/bin/sh:1:apk:未找到命令'/bin/sh-c apk add--no cache curl tar bash&&curl-SsL-o/tmp/maven.tar.gz'http://www-us.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz &&mkdir-p/opt&&tarxzf/tmp/maven.tar.gz-C/opt/&ln-s/opt/apache-maven-3.3.9/opt/maven&&rm/tmp/maven.tar.gz'返回了一个非零代码:127
Ok,现在试试——我已经更改了openjdk的版本。我刚刚运行了这个,它在我的机器上运行得很好,这是一台运行最新版本docker tools的windows笔记本电脑。我面临同样的问题,你能告诉我把这两个文件放在哪里吗?放在docker文件的同一目录中