使用Java和Node.js创建Docker容器

Ale*_*lls 12 java selenium node.js docker dockerfile

我不确定为什么我期望这个工作:

 # Dockerfile    
 FROM node:6
 FROM java:8
Run Code Online (Sandbox Code Playgroud)

但它确实不起作用 - 看起来第一个命令被忽略,第二个命令工作.

有没有一种直接的方法在Docker容器中安装Node.js和Java?

最终我试图解决的问题是我在运行Selenium Webdriver时遇到ENOENT错误 -

[20:38:50] W/start - Selenium Standalone server encountered an error: Error: spawn java ENOENT
Run Code Online (Sandbox Code Playgroud)

而现在我认为这是因为Java没有安装在容器中.

Ale*_*hin 16

最好的方法是使用java(已正式弃用并建议您使用openjdk图像)并在其中安装节点.

所以,先从

FROM openjdk:latest
Run Code Online (Sandbox Code Playgroud)

这将使用最新的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 Code Online (Sandbox Code Playgroud)

你可能想要事后安装像grunt这样的东西,所以这也可以派上用场.

RUN npm install -g grunt grunt-cli
Run Code Online (Sandbox Code Playgroud)

总的来说,您将获得以下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
Run Code Online (Sandbox Code Playgroud)

你可以从我的gitlab回购克隆Dockerfile 这里

  • 最新版本的“ openjdk:latest”映像使用Oracle Linux(基于Red Hat的发行版)作为基础,而不是Debian。这意味着“ apt”不再可用,而需要使用“ yum”。 (2认同)
  • @MalcolmCrum `openjdk oraclelinux8` 镜像使用精简版本的 `oraclelinux8` ,不再安装 `yum` 或 `dnf`。相反,他们有“microdnf”,您可以使用相同的方式(例如从“Dockerfile”安装 cron):“RUN microdnf update -y && microdnf install -y cron” https://github.com/oracle/container-images/issues /16#issuecomment-543459881 (2认同)

Max*_*kov 6

FROM每个生成的图像可以使用一个。尝试node用作基本映像并将Java安装到它。


Val*_*tin 5

您还可以使用node映像,然后安装default-jre

# Dockerfile
FROM node:latest
RUN apt-get -y install default-jre
Run Code Online (Sandbox Code Playgroud)

您可以选择您需要的版本:

apt install default-jre
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless
Run Code Online (Sandbox Code Playgroud)