带有Maven的Docker映像无法运行
我想在我的Docker图像中使用Maven 查看此处后,我尝试使用此Dockerfile:带有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
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文件的同一目录中