我想在我的Docker镜像中使用Maven。
在这里https://hub.docker.com/_/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
我在同一个存储库中尝试了不同的Dockerfiles,但它们都抛出了这个错误。
这个dockerfile有什么问题? 如何在Docker中使用Maven?
答案 0 :(得分:0)
试试这个:
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
)。如果您没有自定义设置文件,请删除COPY
和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
答案 1 :(得分:0)
我遇到了同样的问题,我忘了下载“mvn-entrypoint.sh”文件.. https://github.com/carlossg/docker-maven/tree/322d0dff5d0531ccaf47bf49338cb3e294fd66c8/jdk-8 ..还需要settings-docker.xml ..
答案 2 :(得分:0)
您需要在Dockerfile mvn-entrypoint.sh
和settings-docker.xml
中复制的文件。
您可以从https://github.com/carlossg/docker-maven