一尘不染

泊坞窗:在$ PATH中找不到可执行文件

docker

我有一个安装的docker映像grunt,但是当我尝试运行它时,出现错误:

Error response from daemon: Cannot start container foo_1: \
    exec: "grunt serve": executable file not found in $PATH

如果我以交互模式运行bash,grunt则可用。

我究竟做错了什么?

这是我的Dockerfile:

# https://registry.hub.docker.com/u/dockerfile/nodejs/ (builds on ubuntu:14.04)
FROM dockerfile/nodejs

MAINTAINER My Name, me@email.com

ENV HOME /home/web
WORKDIR /home/web/site

RUN useradd web -d /home/web -s /bin/bash -m

RUN npm install -g grunt-cli
RUN npm install -g bower

RUN chown -R web:web /home/web
USER web

RUN git clone https://github.com/repo/site /home/web/site

RUN npm install
RUN bower install --config.interactive=false --allow-root

ENV NODE_ENV development

# Port 9000 for server
# Port 35729 for livereload
EXPOSE 9000 35729
CMD ["grunt"]

阅读 318

收藏
2020-06-17

共1个答案

一尘不染

当您将exec格式用于命令(例如CMD ["grunt"],带双引号的JSON数组)时,将在 没有 外壳的 情况下
执行该命令。这意味着大多数环境变量将不存在。

如果您将命令指定为常规字符串(例如CMD grunt),则之后的字符串CMD将使用来执行/bin/sh -c

有关更多信息,请参阅Dockerfile参考的CMD部分。

2020-06-17