我不确定为什么我期望它能起作用:
# 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(它已被正式弃用,建议你使用
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 这里
您可以为每个生成的图像使用单个
FROM
。
尝试使用 node
作为基础镜像并安装 java。
您还可以使用
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
也许,您可能想尝试一下 https://hub.docker.com/r/timbru31/java-node 来创建 docker 文件。
此 docker 镜像预装了 Java 和 Node。当两者都需要作为依赖项时,它会派上用场。
类似的东西,
FROM timbru31/java-node:<tag>
这适用于我的node v16.15.0,请注意java的包版本,我默认使用最新的。 java使用的包有:
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"]
希望这对大家有用
dockerfile 中的
FROM
只是告诉 docker 应从哪个映像启动配置。您不能简单地将多个图像连接在一起。已经有多个可用的容器映像提供预安装的 Java 8 和 Node JS。我不想专门推荐任何镜像,但会引导您到docker-hub,让您自行搜索并使用最适合您需求的容器。
这对我有用:
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
使用 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