#概要
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の違いの解説