2017-06-16 7 views
0

Ich versuche, "mvn install" durchzuführen, um eine WAR-Datei aus Dockerfile zu erstellen. Bellow ist die DockerfileIch versuche, mvn install von Dockerfile ausführen, aber es funktioniert nicht sagt mvn nicht gefunden

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"] 

ich auch den Weg des bin-Verzeichnis von Maven in die Umgebungsvariable PATH hinzugefügt.

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

Dieser Pfad ich von Root-Benutzer in meiner Maschine festgelegt, fügte ich auch den gleichen Pfad in PATH-Variable als normaler Benutzer bereits.

So, jetzt ist Ausstieg aus Root-Benutzern und kommt zurück von sudo su root-Benutzer zu sein und PATH-Variable zu überprüfen, hat es nicht Pfad von Maven

Also, wenn ich Docker machen Build von Bild, das ich die unten Fehlermeldung erhalten

/bin/sh: 1: mvn: nicht Der Befehl gefunden '/ bin/sh -c mvn install' ergab einen nicht-Null-Code: 127

Antwort

0

Ihr Behälter sein eigenes Dateisystem haben. So die MVN-Binärdatei auf Ihrem System verfügbar ist, ist nicht auf einem Basis-Ubuntu-Bild verfügbar.

Sie sollten es installieren zunächst in den Behälter (mit einem RUN apt-get install..) Sie werden dann in der Lage sein, es

+0

I "ADD Apache-Maven-3.3.9/opt/maven3" hinzugefügt Maven in der Docker-Datei hinzufügen und die Pfad des Maven-Bin-Verzeichnisses ist in Pfadvariable in meiner Docker-Datei Zeile 11, aber immer noch derselbe Fehler erscheint –

+0

Können Sie versuchen, den vollständigen Pfad zu MVN zu verwenden?/opt/maven3/mvn installieren? – Wee

1

Da in den nächsten Lauf zu verwenden, dass Sie möchten, dass Ihre Anwendung in einem Tomcat 8 Docker Behälter auszuführen:

M_UserTP
+ Dockerfile
+ pom.xml:

sollte Ihr maven Projekt wie verlegt werden + src
+ Ziel

Dies ist ein Standard-Maven-Layout plus Ihre Dockerfile.

Stellen Sie sicher, dass Ihre pom.xml folgende finalName darin definiert enthält:

<build> 
    <finalName>${project.artifactId}</finalName> 
    ... 
</build> 

Ihre Dockerfile kann wirklich einfach sein:

FROM tomcat:8.0  
COPY target/M_UserTP.war $CATALINA_HOME/webapps/ 

(Beachten Sie, wie die finalName vom Dockerfile verwendet wird)

es zu erstellen, auszuführen:

mvn clean install && docker build . -t Bhoot/M_UserTP 

Sie können verwenden, was immer -t Tag, das Sie wollen.

Es wird einige Zeit dauern, wenn Sie dies tun, während das Standard-Tomcat 8-Image heruntergeladen wird.

Jetzt können Sie es laufen:

docker run --detach --publish 8080:8080 Bhoot/M_UserTP 

Sie haben nicht wirklich WAR-Datei in dem Docker Bild aufbauen wollen. Dies wird alle maven-Repository-Komponenten saugen, die von maven verwendet werden, um Ihre Anwendung in das Image zu integrieren. Dieser Raum ist nicht wiederherstellbar, da Bilder nur immer größer werden - sie schrumpfen nie wieder.

Verwandte Themen