【发布时间】:2020-03-11 07:35:48
【问题描述】:
我需要扩展一个 Dockerfile 并向其添加 grunt。我做了以下事情:
这个 docker 按原样运行
FROM openjdk:8-jdk-slim
ARG ND=v12.13.0
RUN apt-get update && \
apt-get install --yes --no-install-recommends curl && \
NODE_H=/opt/nodejs; mkdir -p ${NODE_H} && \
curl --fail --silent --output - "http://nodejs.org/dist/${ND}/node-${ND}-linux-x64.tar.gz" \
| tar -xzv -f - -C "${NODE_H}" && \
ln -s "${NODE_H}/node-${ND}-linux-x64/bin/npm" /usr/local/bin/npm && \
ln -s "${NODE_H}/node-${ND}-linux-x64/bin/node" /usr/local/bin/node && \
ln -s "${NODE_H}/node-${ND}-linux-x64/bin/npx" /usr/local/bin/ && \
npm install grunt-cli -g
RUN grunt -v
我还放了以下无济于事的...
ENV PATH="$PATH:/usr/local/bin"
当我运行命令grunt-v 时,出现以下错误:
/bin/sh: 1: grunt: not found。
我也尝试通过npm install grunt -g 安装 grunt,但没有成功。知道如何解决吗?
来自 docker build 的 grunt 输出
/opt/nodejs/node-v12.13.0-linux-x64/bin/grunt -> /opt/nodejs/node-v12.13.0-linux-x64/lib/node_modules/grunt-cli/bin/grunt
+ grunt-cli@1.3.2
我需要 grunt 命令在此 docker 映像中可用
我无法更改 docker 映像,即表单 jdk...这是给定的
更新
我也尝试过 VonC 的建议,但仍有问题,
FROM openjdk:8-jdk-slim
ARG ND=v12.13.0
RUN apt-get update && \
apt-get install --yes --no-install-recommends curl && \
# install node
NODE_HOME=/opt/nodejs; mkdir -p ${NODE_HOME} && \
curl --fail --silent --output - "http://nodejs.org/dist/${ND}/node-${ND}-linux-x64.tar.gz" \
| tar -xzv -f - -C "${NODE_HOME}" && \
ln -s "${NODE_HOME}/node-${ND}-linux-x64/bin/node" /usr/local/bin/node && \
ln -s "${NODE_HOME}/node-${ND}-linux-x64/bin/npm" /usr/local/bin/npm && \
ln -s "${NODE_HOME}/node-${ND}-linux-x64/bin/npx" /usr/local/bin/ && \
npm install -g grunt-cli
ENV PATH="${PATH}:/usr/local/bin"
RUN ls /usr/local/bin/
RUN grunt -v
ls 命令返回
docker-java-home
node
npm
npx
知道缺少什么吗?
【问题讨论】:
-
你能从一个
node基础镜像开始,它会正确设置所有标准路径吗? -
@DavidMaze - 谢谢,但这是给定的,我无法更改它,没有办法将它与现有的 java 映像一起使用?
-
@Jhon D - 当然,有一种方法可以处理给定的图像,但节点基础图像很可能更适合。基于您的基本图像(openjdk:8-jdk-slim)的工作示例在我的回答中
-
@John D:您是否根据提供的答案使其正常工作,还是还有未解决的问题?
标签: node.js docker path gruntjs dockerfile