LoginSignup
6
8

More than 5 years have passed since last update.

Dockerはrunでbashrcが反映されずに困ったマヌケな話

Posted at

こんにちはみなさん

いや、ホント、タイトル通りなんですが、しょうもないことでハマりまして。

Laradockを使っている人が増えてきたようで、私としては嬉しいところです。
そんなLaradockのworkspaceが使いやすいので、CIでも使っていたのですが、node系のコマンドを使う際に全然動かず、jsやcssのビルドができない事態に陥りました。

経緯

  1. CIでLaradockのworkspaceを利用してアプリケーションのビルドとデプロイをしようとした
  2. composerを使ってテストを走らせるところまではうまく行った
  3. node系のnpmやbowerを使おうとしたら、エラーが出て失敗してしまった

エラーはこんな感じです。

$ docker run --rm workspace node
container_linux.go:247: starting container process caused "exec: \"node\": executable file not found in $PATH"
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"node\": executable file not found in $PATH".

原因

タイトルでも書いてありますが、bashの対話シェルで実行しているわけではなく、docker runにてダイレクトにコマンドが実行されているため、.bashrcや.profileにある設定を読み込んでいないため、nodeの実行コマンドへのパスが通っていないという事態になっていました。

解決策(?)

全然応用きかないですが、Laradockのworkspaceの現在の構造を見るに、

buildnode
#!/bin/bash

. $NVM_DIR/nvm.sh && $*

こんな感じのスクリプトファイルを用意して

FROM laradock_workspace:latest
MAINTAINER Niisan <niisan@me.com>

COPY buildnode /usr/local/bin
RUN chmod +x /usr/local/bin/buildnode

みたいな感じの構成でLaradockのdocker-composeで生成されたイメージを基に別途イメージを作ってしまいます。
そうすると、

$ docker build -t niisantokyo/laradock_ws .
$ docker run -it --rm niisantokyo/laradock_ws buildnode node -v
v7.3.0
docker run -it --rm niisantokyo/laradock_ws buildnode npm -v
3.10.10

こんな感じでなんとか行きました。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8