1. ホーム

[解決済み】docker: 実行可能ファイルが$PATHに見つからない

2022-03-30 17:42:38

質問

をインストールする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, [email protected]

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"]

解決方法は?

コマンドにexec形式を使用した場合(例. CMD ["grunt"] のように、二重引用符で囲まれたJSON配列が実行されます。 なし シェルを使用します。つまり、ほとんどの環境変数が存在しないことになります。

コマンドを通常の文字列で指定した場合(例. CMD grunt ) の後の文字列は CMD が実行されます。 /bin/sh -c .

詳細は、CMDセクションの Dockerfile リファレンス .