15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

これは何?

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

他にもこんな案も見た。

参考にさせて頂いたもの

15
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?