在docker中安装maven

问题描述 投票:0回答:1

我正在尝试在 Dockerfile 中使用 maven 安装和构建一个文件,但出现错误

 mvn not found
... 我参考了一些文章,但没有找到任何东西

任何人都可以帮我解释为什么我会遇到这个问题以及如何解决这个问题吗?

我的代码

FROM ubuntu:latest
MAINTAINER ganeshthirumani
RUN apt-get update && apt-get install -y wget
ARG USER_HOME_DIR="/root"
#create a dir foe maven in opt
RUN mkdir /opt/maven
RUN mkdir /usr/share/maven
#RUN mkdir /usr/share/maven
#dwnl maven using link in tmp
RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz -O /tmp/maven.tar.gz
#extract the file
RUN cd /tmp && tar xvf maven.tar.gz
#copy the file into opt/maven
RUN cp -R /tmp/apache-maven-3.8.4/* /usr/share/maven/
#RUN cp /opt/files/* /usr/share/maven
# Install OpenJDK-8
RUN apt-get update && \
    apt-get install -y openjdk-8-jdk && \
    apt-get clean;
    
# Fix certificate issues
RUN apt-get update && \
    apt-get install ca-certificates-java && \
    apt-get clean && \
    update-ca-certificates -f;

# Setup JAVA_HOME -- useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME

#dwnl zip and move to /opt/files
RUN mkdir /opt/files
RUN  wget <this is my zip file> -O /tmp/zip_file.zip
RUN cp /tmp/zip_file.zip /opt/files/


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

RUN mvn clean install -Pdevelopment
#RUN mvn clean install -Pdeployment 


CMD ["mvn", "--version"]

在构建时...

Sending build context to Docker daemon  97.28kB
Step 1/20 : FROM ubuntu:latest
 ---> d13c942271d6
Step 2/20 : MAINTAINER ganeshthirumani
 ---> Using cache
 ---> 83dbc04930a4
Step 3/20 : RUN apt-get update && apt-get install -y wget
 ---> Using cache
 ---> 5a26c629963f
Step 4/20 : ARG USER_HOME_DIR="/root"
 ---> Using cache
 ---> fea8fd2bb7f6
Step 5/20 : RUN mkdir /opt/maven
 ---> Using cache
 ---> 16a42d6b96c3
Step 6/20 : RUN mkdir /usr/share/maven
 ---> Using cache
 ---> 012f68749248
Step 7/20 : RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz -O /tmp/maven.tar.gz
 ---> Using cache
 ---> dc498bb88baf
Step 8/20 : RUN cd /tmp && tar xvf maven.tar.gz
 ---> Using cache
 ---> be08499a07db
Step 9/20 : RUN cp -R /tmp/apache-maven-3.8.4/* /usr/share/maven/
 ---> Using cache
 ---> 7a705ce7213d
Step 10/20 : RUN apt-get update &&     apt-get install -y openjdk-8-jdk &&     apt-get clean;
 ---> Using cache
 ---> 452e0b263645
Step 11/20 : RUN apt-get update &&     apt-get install ca-certificates-java &&     apt-get clean &&     update-ca-certificates -f;
 ---> Using cache
 ---> d65d98457da5
Step 12/20 : ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
 ---> Using cache
 ---> b8cacc77d6b0
Step 13/20 : RUN export JAVA_HOME
 ---> Using cache
 ---> 1a5918571b65
Step 14/20 : RUN mkdir /opt/files
 ---> Using cache
 ---> 66d092f96235
Step 15/20 : RUN  wget https://drive.google.com/file/d/1IutshyYqlcTw_MkfC1NJzU9AH8B-W2Fa/view?ts=61f24be4 -O /tmp/zip_file.zip
 ---> Using cache
 ---> 7180fa09993b
Step 16/20 : RUN cp /tmp/zip_file.zip /opt/files/
 ---> Using cache
 ---> bc861eb85449
Step 17/20 : ENV MAVEN_HOME /usr/share/maven
 ---> Using cache
 ---> be97d22b8558
Step 18/20 : ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
 ---> Using cache
 ---> 7874ed478f2f
Step 19/20 : RUN mvn clean install -Pdevelopment
 ---> Running in 5b58132ba431
/bin/sh: 1: mvn: not found
The command '/bin/sh -c mvn clean install -Pdevelopment' returned a non-zero code: 127

我看到基本目录是: 对于 maven 主目录 MAVEN_HOME /usr/share/maven 对于配置---> MAVEN_CONFIG "$USER_HOME_DIR/.m2 并且 user_home_dir 是根目录

提前致谢

docker maven ubuntu
1个回答
0
投票

这似乎是一个很好的解决方案:https://gist.github.com/LuanComputacao/6cf199fc577f7ee5fb85a504176d78ca

他们使用 alpine,所以你必须稍微改变一下才能在 ubuntu 上使用它。

ARG MAVEN_VERSION=3.6.3
ARG USER_HOME_DIR="/root"
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries


# Install Java.
RUN apt install openjdk7 curl && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
 && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
 && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
 && rm -f /tmp/apache-maven.tar.gz \
 && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

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

# Define working directory.
WORKDIR /data

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/default-jvm/
© www.soinside.com 2019 - 2024. All rights reserved.