2017-06-16 20 views
0

我試圖執行「MVN安裝」從Dockerfile創建war文件。波紋管是Dockerfile我試圖執行MVN從Dockerfile安裝,但它不工作說MVN沒有找到

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

我還在PATH環境變量中添加了maven的bin目錄的路徑。/usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin:/ usr/games:/ usr/local/games:/ home /veni/Documents/apache-maven-3.3.9/bin/

此路徑我從根用戶在我的機器設定,我也在PATH變量如已經正常用戶添加相同的路徑。

所以現在從root用戶我退出,回來的須藤蘇以root用戶,並檢查PATH變量,它不是行家的路徑

所以,當我做形象的碼頭工人建立我得到的波紋錯誤

/bin/sh的:1:MVN:找不到 命令 '/ bin/sh的-c MVN安裝' 返回非零代碼:127

回答

0

您的容器有它自己的文件系統。 因此,系統上可用的mvn二進制文件在基本ubuntu映像上不可用。

你應該在你的容器先安裝它(用RUN apt-get install..) 然後,您就可以使用它在未來RUN

+0

我加入 「ADD的Apache Maven的-3.3.9的/ opt/maven3」 在泊塢窗文件和添加行家maven bin目錄的路徑在我的docker文件行no 11的路徑變量中,但仍然出現相同的錯誤 –

+0

您可以嘗試使用mvn的完整路徑嗎?/opt/maven3/mvn安裝? – Wee

1

既然你要在Tomcat 8泊塢窗容器中運行的應用程序:

你的Maven項目應該進行佈局,如:

M_UserTP
+ Dockerfile
+的pom.xml
+ SRC
+目標

這是一個標準的Maven佈局加上你Dockerfile。

確保你的pom.xml包含它定義了以下finalName

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

你Dockerfile可以很簡單:

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

(注意finalName是如何使用的Dockerfile)

要建立它,請執行:

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

你可以使用你想要什麼都-t標籤。

這將需要一段時間第一次這樣做,而標準的Tomcat 8下載圖像。現在

你可以運行它:

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

你不是真的想建立WAR文件的碼頭工人形象。這將吸收maven使用的所有Maven倉庫組件,將您的應用程序構建到鏡像中。這個空間是不可恢復的,因爲圖像只會增長 - 它們再也不會縮水。