なぜこの記事を書いたか
いつもはmacOS上でdocker-composeを使って色々と開発環境を構築しているんですが、Windowsユーザーの方とdocker-compose.ymlを共有する必要があり、そこで「WSL上のdocker-composeではvolumeのマウントに相対パスが使えない」問題に引っかかりました。
良く見かける記事では「絶対パスにしましょう」とか「環境依存にならないように$ROOT_PATHなどを使って絶対パスを書きましょう」と書かれているのですが、絶対パスを使わなくても良い方法を検索で見つけたため、そちらを共有しようと考えました。
TL;DR
WSL上の/etc/wsl.conf
を新規で作成し、以下の状態にします。
[automount]
root = /
options = "metadata"
ファイルを保存したら、Windowsを再起動すると、WSL上のdocker-composeで相対パスが使えるようになります。
検索したページ
いくつかキーワードを設定し、たどり着いたのが以下のページ。
「WSLとDocker for WindowsでGROWIを動かすとvolumesでつまずく」
https://blog.mahoroi.com/posts/2019/04/growi-wsl-docker-for-windows/
こちらに上記の内容が書かれていて「おお〜っ!!」となりました。
Windowsを再起動すると何が変わるか?
上記ページにも書かれていますが、簡単に言うと/mnt/c/foobar/
といった形だったWSLのディレクトリ構造が、/c/foobar/
に変わります。NTFSマウントのROOTが/mnt/
から/
に変わったわけですね。
では何故これで相対パスが使えるようになるのか?
実は良く分かって無い状態で使ってます。何か副作用が無ければ良いのですが、、、(そんな無責任な)
最後に
ひとまずmacOSとWindowsで同じdocker-compose.ymlファイルが使えるようになりました。しばらく使って問題が出るようであれば、こちらに追記させて頂きます。