Railsの開発環境をDockerで作成しようとしようとした際に、うまくホストのディレクトリがマウントできずに苦しんだ話。
最終的にはDocker ToolboxとVM VisualBoxを再インストールし直したらマウントできました。
メモとして残しておきます。
#導入環境
- Windows10 Home 64bit
1.何をやろうとしたか
Railsの開発環境をローカルで構築しようと、Dockerをインストールするところからスタート。
私のPCはWindows10 Homeだったため、Docker ToolBoxを使用。
Windows環境にDocker Toolboxをインストールする
[丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)]
(https://qiita.com/azul915/items/5b7063cbc80192343fc0)
こちらの記事を参考に必要なファイルを用意し、rails newを実行しました。
(分かりやすくDocker初心者でも構築できるナイスな記事たちです。)
#2.実行結果
エラーは発生しませんでしたが、指定したディレクトリにうまくマウントできておらず、想定とは違う結果に。
本来の想定ではrails newを実行したフォルダ直下にファイルがずらっと並ぶはずでした。
#3.やったこと
いくつかの方法を試して見ました。
(1)docker-compose.ymlのvolumesを変更
マウントが失敗している原因として真っ先に浮かんだのが、volumesの指定だったためパスの指定を絶対パスに変えてみました。
結果は駄目でした。いくつかのパターンを試してみましたが、どれもマウントできませんでした。
web:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- #.:/app_name 修正前
- C:\Users\ユーザー名\projects\ror:/app_name #修正後
(2)boot2docker.isoを入れ直し、docker-machine create
実行
調査中こちらの記事を見たため、実施。
docker toolboxでホストのディレクトリがマウントできない場合の対処方法
結果は変わらずにマウントできませんでした。
(3)Oracle VM VirtualBoxの共有フォルダ変更
Docker Toolboxはホストのディレクトリをマウントするとき、CドライブのUsers内のみ共有できるとの記載を見たので、確認してみました。
確かに設定上はUsersフォルダになっています。
今回マウントしようとしていたフォルダもUsers下にありますが、念の為プロジェクトのパスを指定してみました。
これもマウントできない。。。
#4.初心に立ち返る
ここまでで私の心は疲れ果ててしまったので、全部まっさらにしてやり直すことにしました。
Docker ToolboxとVM VisualBoxを殺意を持ってアンインストールして、最初から再インストール。
使用するファイル(docker-compose.yml等)もすべて最初から作成し直し、半ば諦めながらrails newを実行。
・・・
理由は全くわかりませんが、なぜかマウントできました。
#5.学んだこと
最後はあっけなく、また理由もわからないというしょうもない解決でしたが、学んだことも多かったです。
特に今回始めてDockerを使用したため、構築に必要なファイルの記述方法やコンテナの概念に詳しくなりました。
恐らく手順通りに実施できていれば、ここまで調査することもなかったと思うのでその点は収穫だと思います。
#まとめ
わけがわからなくなったときは、最初からやり直す。急がば回れ。