Help us understand the problem. What is going on with this article?

Windowsでdocker-composeしてvolumesでハマった時に個人的に気にするリスト

これは何?

docker-composeWindowsのディレクトリを指定してマウントしようとしてvolumes辺りでハマった時、同じことを何度か調べた気がするのでメモにしました。

うまくいったりいかなかったりしてるので、フワッとしたことばかり書いています。
「これで大体うまくいくよ~」っていうのがあったら教えてください…。

リスト

  • 環境変数
  • Shared Drives / Reset credentials
  • docker-compose / docker-compose.yamlのバージョン
  • ディレクトリの権限
  • コンテナ削除
  • volume削除
  • Docker再起動
  • volumesの書き方

環境変数

COMPOSE_CONVERT_WINDOWS_PATHS=1

気になる人は検索してもらえればたくさん出ると思う。
Docker for Windowsの人はそもそも関係ありません」という記述も見た気がするが、これで直ったという記述も見た気がする。
環境変数いじったら、コマンドラインは立ち上げ直す。

Shared Drives / Reset credentials

キャプチャ.PNG

Sharedをチェック入れ直してApplyし直したり、Reset credentialsしてやり直したりして解決することはある。

docker-compose / docker-compose.yamlのバージョン

とりあえず公式を見て最新にした方が良いとは思う。
ただ、最新を追いすぎても別の何かにハマる可能性は一応あることは頭に入れておく。

ディレクトリの権限

変なことになっていないか見る程度。

コンテナ削除

うまくいかなかったコンテナは消す。

volume削除

うまくいかなかったvolumeは恐らく残るので消した方が良い。

Docker再起動

これのおかげで直ったパターンはあまり無い気はする。

volumesの書き方

いろいろ試してみて、うまくいったりすることもあった気がする。
postgres特有のバグとの合わせ技だったりすることもあって、正直よくわからない。

パターン1.yaml
services:
  mysql:
    image: mysql
    volumes:
      - C:\temp:/var/lib/mysql
パターン2.yaml
services:
  mysql:
    image: mysql
    volumes:
      - /C/temp/data/mysql:/var/lib/mysql
driver_optsを付与するパターン.yaml
version: "3.7"
services:
  database:
    image: postgres:9.6-alpine
    volumes:
      - database:/var/lib/postgresql/data
volumes:
  database:
    driver_opts:
      type: none
      device: /c/temp/data
      o: bind

他にもこんな案も見た。

参考にさせて頂いたもの

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした