2017-05-03 51 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'。应该是最新版本。 –