わしのlog

プログラミングとかバイクとか。

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の今後に期待(?)
私が正規の方法を知らないだけかもしれませんが。



現場からは以上です。


参考文献

  1. Docker for WindowsをWSLから使う時のVolumeの扱い方 - Qiita
  2. Setting Up Docker for Windows and WSL to Work Flawlessly — Nick Janetakis
  3. docker for windowsでのdocker-composeのvolumes - Qiita
  4. How to set up Docker and Windows Subsystem for Linux: A Love Story. 💚
  5. [Cross Post] WSL Interoperability with Docker – Windows Command Line Tools For Developers

*1:参考文献1を参照