概要
webアプリケーションを勉強中で、dockerが良いということを知ったので、古いパソコンにUbuntuを入れて色々調べながら、何とか環境を構築したのですが、いざ動かそうとしたときにrailsコマンドとかが実行できず、そこら辺を理解するのに時間がかかったので、まとめました。
実行できなかった理由
当たり前なんですが、railsの実行環境はコンテナの中にあるので、コンテナに入る必要がありました。
そして、その方法を色々調べた結果、2つの方法があることが分かりました。
dockerコマンド
docker container exec -it コンテナ名 bash
コンテナ名は
docker-compose ps
で見ることができます。また、
docker container ps
より得られるコンテナIDを入力してもいけました。
docker-composeコマンド
docker-compose exec サービス名 bash
ここでのコンテナ名はdocker-compose.ymlで入力したサービス名となっています。
補足
execコマンドは、起動中のコンテナ内で、指定したコマンドを実行するコマンドで、bashやshを実行することで、コンテナ環境とカーネル等をつなげてくれます。
このとき、docker container execの方は端末の起動オプションtと標準入力を開き続けるオプションiを指定する必要があります。
docker-compose execの方はデフォルトで端末が割り与えられるようになっているみたいなので、オプションをはいらないです。
コンテナ内のコマンドを1回だけ実行したい場合は、bashをrails -vなどに書き換えればOKです。
参考
docker-compose exec
【初心者向け】シェル・ターミナル・コンソールの違いとは?
docker runとdocker execの違いの解説