WSL上でdocker-composeを使った時のvolumes指定(失敗)
はじめに
失敗してます(断言)
(暫定的な対応は行いましたが・・・)
なにかいい方法ないんですかねぇ・・・(困惑)
手順
手順もなにも、失敗しているんですが。
愚直に書くとこんな感じ?
version: '2' services: gitlab: image: 'gitlab/gitlab-ce:latest' restart: always ports: - '10080:80' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/data:/var/opt/gitlab'
実際にはこのvolumesの指定方法だと
指定された箇所にはディレクトリは作成されません。
なぜかと言いますと、WSL内のディレクトリを指定しているのではなく、
ホスト(Windows側)のディレクトリを指定してしまっているのが原因のようです。*1
当たり前っちゃ当たり前なのかな?
調べてみること数十分
Windowsとdockerで共有しているドライブを指定する
や
あきらめる
という手段に行き着くことに(おいっ
どうするか
Stack Overflowとかgitlabのissueを見てるとこんな記事が。
nickjanetakis.com
求めていたものはこれでは!?
歓喜して手順通り実行。
できへんやないか・・・
何が間違ってるんだ・・・わからん。
最終的な対応
とりあえず、以前記事にも書いたように
WSL内のdockerコンテナからdocker cp
コマンドで
volumes指定したディレクトリに該当するものを引っ張ってくる
という形に落ち着きました。
本当ならvolumesで指定して華麗にマウントしたかったんですけどねぇ・・・。
正直コピーして編集して反映とか面倒くさいし。
まとめ
素直に仮想環境なりでLinuxを使おう
余談ですが、どうしてもWSL上でgitlabを使ってみたく
WSL上にgitlabを素でインストールしてこの質問と同じような壁にぶち当たったり等
紆余曲折ありました・・・。
WSLの今後に期待(?)
私が正規の方法を知らないだけかもしれませんが。
現場からは以上です。
参考文献
- Docker for WindowsをWSLから使う時のVolumeの扱い方 - Qiita
- Setting Up Docker for Windows and WSL to Work Flawlessly — Nick Janetakis
- docker for windowsでのdocker-composeのvolumes - Qiita
- How to set up Docker and Windows Subsystem for Linux: A Love Story. 💚
- [Cross Post] WSL Interoperability with Docker – Windows Command Line Tools For Developers
*1:参考文献1を参照