新米エンジニアの失敗再発防止メモ

自分そしてこの世界の皆が、同じ失敗をしないためのメモ

Twitterやってます!@rakuton_t
欲しいものリストのブタメンを送ってくれた方、ありがとうございます!

Docker Desktop で Windowsとファイル共有(File Sharing) して任意のフォルダをマウントする。

Windowsで、Docker Desktop を使い、
dockerコンテナ起動時に任意のフォルダをマウントする方法
というよりかは、ちょっとした気を付ける点を解説します。

ファイル共有方法

あなたの環境によって2パターンあります。

・WSL Integrationが有効になっている場合(WSL統合されている場合)

設定 > Resources > WSL Integration
Docker Desktop 設定画面

上記の画面で、
Enable integration with my default WSL distro
にチェックが入っていることを確認してください。
チェックが入っていれば何も設定することはありません。
※ただし、後述しますが注意点があります。


・WSL統合されていない場合
設定 > Resources > File Sharing
にて、dockerコンテナ起動時にマウントしたいフォルダパスを追加してください。
私の環境だとWSL統合されているのでこの画面は出ませんので画像はありません。

dockerコンテナ起動時の注意点

マウントするフォルダは、絶対パスで指定しましょう。

下記、例えばDynamoDB Localを実行しようとしたときのコマンドです。

docker run `
 -p 8000:8000 `
 -v C:/Dev/dynamodb-learn/db:/home/dynamodblocal/db `
 amazon/dynamodb-local:latest `
 -jar DynamoDBLocal.jar `
 -sharedDb `
 -dbPath /home/dynamodblocal/db

重要なのはこの行ですね。

-v C:/Dev/dynamodb-learn/db:/home/dynamodblocal/db `

Cドライブからの絶対パスで指定しましょう。
Cドライブより下のパスは私がこの場所で作業しているというだけなので気にしないでください。

DynamoDB Localで、dockerコンテナを再起動してもデータが残るようにするために必要な設定なのですが、
元々下記のように相対パスで指定していて、DynamoDBにテーブル作成が出来ませんでした。絶対パスで指定しましょう。(大事なことなので2回ry)

 -v ./db:/home/dynamodblocal/db

まとめると、
docker で フォルダをマウントするときは絶対パスで指定しましょう。

私の記事が役に立ったら、どうぞ何か買ってください!→ Amazon欲しいものリスト