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

问题描述 投票:0回答:8

我不确定为什么我期望它能起作用:

 # Dockerfile    
 FROM node:6
 FROM java:8

但它并没有真正起作用 - 看起来第一个命令被忽略,第二个命令起作用。

有没有一种简单的方法可以在 Docker 容器中安装 Node.js 和 Java?

最终我要解决的问题是运行 Selenium Webdriver 时出现 ENOENT 错误 -

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

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

java node.js selenium docker dockerfile
8个回答
28
投票

对你来说最好的方法是使用java(它已被正式弃用,建议你使用

openjdk
图像)并在其中安装node。

所以,从

开始
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

之后您可能想安装 grunt 之类的东西,所以这也可能会派上用场。

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

您可以从我的 gitlab 存储库克隆 Dockerfile 这里


16
投票

您可以为每个生成的图像使用单个

FROM
。 尝试使用
node
作为基础镜像并安装 java。


6
投票

您还可以使用

node
映像,然后安装
default-jre
:

# Dockerfile
FROM node:latest
RUN apt-get -y install default-jre

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

apt install default-jre
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless

3
投票

也许,您可能想尝试一下 https://hub.docker.com/r/timbru31/java-node 来创建 docker 文件。

此 docker 镜像预装了 Java 和 Node。当两者都需要作为依赖项时,它会派上用场。

类似的东西,

FROM timbru31/java-node:<tag>

2
投票

这适用于我的node v16.15.0,请注意java的包版本,我默认使用最新的。 java使用的包有:

  • Java运行时环境(jre)
  • Java开发工具包(jdk)
    FROM node:16.15.0

    RUN apt-get update \
     && apt-get install default-jre -y \
     && apt-get install default-jdk -y

    RUN mkdir -p /usr/src/app

    WORKDIR /usr/src/app

    COPY package*.json ./

    RUN npm install
    
    RUN npm install --global nodemon

    COPY . .

    EXPOSE 3000

    CMD ["npm", "run", "dev"]

希望这对大家有用


1
投票

dockerfile 中的

FROM
只是告诉 docker 应从哪个映像启动配置。您不能简单地将多个图像连接在一起。已经有多个可用的容器映像提供预安装的 Java 8 和 Node JS。我不想专门推荐任何镜像,但会引导您到docker-hub,让您自行搜索并使用最适合您需求的容器。


1
投票

这对我有用:

FROM openjdk:16-slim-buster

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

0
投票

使用 Node 14 版本,它非常适合我:

FROM openjdk:latest

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_14.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh \
RUN npm install -g grunt grunt-cli
© www.soinside.com 2019 - 2024. All rights reserved.