docker-compose の railsチュートリアルをウィンドウズでやろうとしたら・・・
tutorial for rails on docker-compose
tutorial : docker-compose and rails
これを見て比較的簡単にrails環境がウィンドウズでも作れるなと思いきや、落とし穴が。
問題
このコマンド、docker-compose runのライブコマンドが使用できない・・・・
これ自体はrailsプロジェクトを作成するコマンドですが、ここで躓きました。
後日、色々試しているとこのコマンドで行ける場合がありましたので修正します。
※これでエラーが出る場合
docker-compose run web rails new . --force --database=postgresql --skip-bundle
↓
↓
※こちらで対処
docker-compose run -d web bundle exec rails new . --force --database=postgresql --skip-bundle
これで無事 new コマンドが実行できました。
下記は現状どうかわかりませんが参考に残しておきます。
実行すると -d flag optionをつけてくれと言われますが、
それをしても該当フォルダにrailsプロジェクトが作成されず、さらにゴミ(?)コンテナが生成されてしまいます。
で、docker-composeのgithub issueを見ていくと
[https://github.com/docker/compose/blob/1655be6c5bcbc35d2a34bd4c464b8a91981aaa42/compose/cli/main.py#L550](https://github.com/docker/compose/blob/1655be6c5bcbc35d2a34bd4c464b8a91981aaa42/compose/cli/main.py#L550)
にて
```
if IS_WINDOWS_PLATFORM and not detach:
raise UserError(
"Interactive mode is not yet supported on Windows.\n"
"Please pass the -d flag when using `docker-compose run`."
)
```
とのこと。
## 解決方法
ライブコマンドは使うな(使えない by windows)
ただし、docker-composeがバージョンアップされれば? 期待しますが。
さしあたって、ライブコマンド以外は途中までチュートリアル通りやって、最後らへんの
docker-compose up を
```
docker-compose up -d
```
で実行してから、
```
docker exec -it **コンテナ名前 bin/sh
```
でコンテナの中に入って普通に
```
rails new . --force --database=postgresql
```
と
```
rake db:create
```
を実行するのが良策だと思います。
## 最後に
ちなみにdockerサイトのチュートリアルはマックだとスムーズにいけます。
ウィンドウズ・・・・・
※ 間違い、こういう方法でいけるよというのを、ご指摘いただければありがたいです。