2017-05-03 23 views
5

創建泊塢容器,我不知道爲什麼,我預計這個工作:與Java和Node.js的

# Dockerfile  
FROM node:6 
FROM java:8 

,但它並沒有真正的工作 - 看起來像第一個命令將被忽略,而第二個命令作品。

是否有一個碼頭工人容器同時安裝的Node.js和Java的簡單方法?

最後我想解決的問題是,我運行硒的webdriver時得到一個ENOENT錯誤 -

[20:38:50] W/start - Selenium Standalone server encountered an error: Error: spawn java ENOENT 

而現在,我想這是因爲Java沒有安裝在容器中。

回答

2

您可以使用單FROM每次生成的圖像。 嘗試使用node作爲基礎映像併爲其安裝Java。

+0

是的克隆Dockerfile,我猜,但是這意味着我花30 +額外秒安裝Java - 如果它是一個圖像,它會快得多... –

+0

在某些情況下,它需要一分鐘安裝java,沒有樂趣 –

+0

我想我會使用Java映像並手動安裝node.js ... –

1

您dockerfile內的FROM簡單地告訴搬運工從圖像應該開始配置。你不能簡單地連接多個圖像。已經有多個可用的容器鏡像提供預裝的Java 8和節點JS。我不想推薦任何具體的圖像,但會引導您到docker-hub你去自己的搜索和使用,符合您需求的最佳容器。

6

最適合你的方法是採取的Java(這是正式棄用,它建議你使用openjdk圖像),並在其安裝節點。

所以,先從

FROM openjdk:latest 

這將使用最新的OpenJDK的形象,這是8u151在這個時候。然後安裝node,你可能需要其他的依賴關係:

RUN apt-get install -y curl \ 
    && curl -sL https://deb.nodesource.com/setup_9.x | bash - \ 
    && apt-get install -y nodejs \ 
    && curl -L https://www.npmjs.com/install.sh | sh 

您可能希望以後安裝的東西一樣咕嚕,所以這可能會派上用場,以及。

RUN npm install -g grunt grunt-cli 

在總,您將得到以下Dockerfile:

FROM openjdk:latest 

RUN apt-get install -y curl \ 
    && curl -sL https://deb.nodesource.com/setup_9.x | bash - \ 
    && apt-get install -y nodejs \ 
    && curl -L https://www.npmjs.com/install.sh | sh \ 
RUN npm install -g grunt grunt-cli 

你可以從我的github回購here

+0

我更新了我的答案以包括最新版本的節點,應該是7 –

+0

問題是,這將在Debian上安裝更舊版本的nodejs - 我如何獲得npm和nodejs的更新版本?對於的NodeJS,我用 「RUN捲曲-SL https://deb.nodesource.com/setup_6.x |須藤-E慶典 - 」 –

+0

這個怎麼樣(另一個編輯)?它按官方github自述的建議安裝'npm'。應該是最新版本。 –