Dockerのコンテナ上でraile new .
を実行しても、本来作成されるはずのファイルやディレクトリが作成されない状況に直面したので、その対処方法について書きます。
Docker以外の環境でも上記の現象は起こりうる可能性があるため、異なる環境で同じよな問題が発生された方にも参考にしていただけるかと思います。
環境
- Host OS
- macOS 10.15.3 Beta
- Docker
- version 2.1.0.5
- Docker Image
- ruby: 2.7-slim
問題
rails new .
を実行すると、本来app
ディレクトリ等が生成されるはずですが、以下のような出力結果がされました。
root@[container_id]:~# rails new ./
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create Gemfile
run git init from "."
特にエラーも出ていなかったので、何も考えずrails s
を実行したところ、rails new をする必要があると出力され、何度rails new .
をしても状況は変わりませんでした。
解決方法
上記の出力を見ると、git
をinit
する部分で処理が終了しています。
エラーが出ていなかったので、何も気にはしていませんでしたが、git
がインストールされていないのが原因でした。
なので、以下のコマンドを実行することで、一旦、appディレクトリとうの作成に関しては解決はしました。
apt install git
ただ、今度は、sqlite3
のインストール(gem)に失敗するため、apt-get install libsqlite3-dev
あたりを実行して、rails newを成功させる必要があります。
根本的な原因としては、Docker Imageでrailsのslim
を使用しているため、必要最低限のアプリケーションしかインストールされておらず、gitが含まれていなかったことが原因だと思われます。
slim
意外にもalpine
版も同じ現象が起こるかと思います。