Dockerに慣れるためにとりあえず現在Vagrantでやってることを置き換えようと思ったが、ちょっとハマったのでメモ。
やりたかったこと
ホストOSからコンテナのrailsディレクトリでbin/bundle install
したかったのだが、docker exec
でディレクトリを変える手段が分からなかった。
結論
以下のようになった。
docker exec -t CONTAINER_NAME bash -c 'cd /path/to/app && bin/bundle install --path .bundle'
-t
オプションがないと出力のカラーリングをしてくれなかった。
ちなみに
docker exec -t CONTAINER_NAME bash -c cd /path/to/app && bin/bundle install --path .bundle
とかだとbin/bundle
がホスト側で実行されてしまう。
exec
に渡すコマンドは1つだけのよう。
あとcd
はbash
の組み込みコマンドなので単にcd
では使えない。
あとこれはあくまでちょっと試し書きしたい時にDockerを使いたいという趣旨であって、当然デプロイなどを考慮した用途ではない。念のため。