はじめに
業務でがっつり WSL(Ubuntu)+Docker という形で開発したことなかったので、今後のために残しておこうというメモ。
※参考のリンク先を貼るだけに留めた記事です
※Docker Desktop ではなく、WSL上にコマンドで直接Docker入れた場合のお話です
更新
-
4.フォルダの所有者&権限
を追加 (2023-12-29) -
1.自動起動
におけるsystemctl
の記載を追記&一部見直し (2024-02-17) - 全体的に見直し (2024-03-20)
1.自動起動
過去には、色々と面倒でしたが、現状は、systemctlでenableすることが一番良さそうです。
ただし、過去に導入したWSLを使っていると、systemctlを使えなかったり、使用が面倒だったりするので、コマンドライン等でwsl --update
を実行してsystemctlを使えるようにしましょう。
2.コンテナ同士のネットワーク接続
コンテナ同士はlocalhost接続できないので、composeで同時作成したり、ネットワークグループ指定で接続したりすることが必要。コンテナの管理が独立していて、後者の方法が必要なときは
を参考に。
他には、extra-hosts設定を使うと管理もラクなのでおすすめです。
3.ファイルの削除
WSL上で(もちろんWSL上に構築しているコンテナ上でも)ファイルを削除したときに、ホスト(Windows)が認識できない(ディスクの空き容量を認識しない)ような状態になり、仮想環境自体をdiskpartの機能で最適化する必要がある。大容量ファイルをコピーする処理で、削除して再実行したいというときは、以下のサイトのような対応が必要になってくるかと思います。
※\\wsl$
の領域で対象ファイルを操作するときに考慮が必要なのかも
※/mnt/c/...
とかでvolume展開している場合とかは問題ないかも
4.フォルダの所有者&権限
ファイルの管理が面倒なので、Windowsの領域(/mnt/c/...
とか)を使ってしまったりしますが、Windowsの領域はフォルダの所有者や権限の変更ができません。
コンテナのデフォルトユーザーが1000以外のものになっていたり(PostgreSQLやMySQLとか)、ファイルの権限を操作する必要があるものをバインドマウントする必要があるものとの相性が悪く、変な調整をしなければならない場合が出てきます。
ただ、WSLの領域を使用して、所有者を変更すると、vscodeで編集できないということも起きます。
この辺りは、なにか良い方法がないのか模索中ではあります…。
さいごに
Windowsで開発するときはなんだかんだで、この組み合わせ便利です。
VSCodeのRemote Containerもまとめたい…