Windows版VSCodeとdockerを連動させる際に詰まった事など

WindowsVSCodeでdocker利用する場合に必要ななにがし

  • Windows10 Pro・・・これがないとDocker for Windowsを利用するためのHyper-Vが利用できないため。
  • Docker for Windows・・・これがないとdockerコンテナを起動できない。(WSL2に関しては、一旦除外)
  • VSCode・・加えて、拡張機能としてRemote-Containersをインスト―ルする。VSCodeのDockerはVSCode上でDockerコンテナを扱いやすくするための機能であるため、お好みでインストールすれば良い。

VSCodeのDockerとRemote-Containersの違い
 Dockerは、リモート接続せずに起動させる場合の拡張機能
 Remote-Containersは、起動したいコンテナにリモート接続する場合に利用する拡張機能
 docker-composerで起動したい場合や、最初イメージをダウンロードしてビルドする場合は、Remote-Containers利用した方が便利かもしれない。

●Remote-Containersで起動した時にVSCodeが再度立ち上がって、表示される内容が異なる
 仕組みを理解してないまま利用しようとしていたので、最初何が起きているのか理解できてなかった。
 

f:id:yoneyore:20200411213949j:plain
コンテナ起動前
f:id:yoneyore:20200411213949j:plain
コンテナ起動後
 コンテナ起動前とコンテナ起動後では、色々見た目が異なっている。
 ※1の様に起動後にコンテナ先に接続しているエディタにおいては、一部の拡張機能が非表示になっている。後述するが、接続を切った際のエディタでは拡張機能は接続前に戻る。※2の様に接続しているかどうかは、この箇所で判断すれば良い。Remote-Containersを使う事で何が嬉しいといえば、※3の様にコンテナに自動でログインできてコンソールが扱えたり、デバック機能と組み合わせれる為である。

●Dockerコンテナの接続の切り方・止め方

  1. Ctrl + Shift + N でエディタをもう一つ上げる。
  2. 元のエディタを閉じる。
  3. 新しいエディタのDocker拡張機能にて対象コンテナを止める。

 正直何が正しいのかいまいちよく分かってない中書いているためもっと効率の良い方法ありそう。
 そもそも、エディタを閉じたタイミングでコンテナ止めて欲しいが、まだそこまで調べ切れていない。
 また、普通にエディタを閉じようとすると、再度エディタを開く際に必ず接続する様になってしまう。ここも設定でどうにかなるのかとは思うがまだ調べれてない。

●Remote-Containersを用いて起動するために最低限必要なファイル

  • .devcontainer/devcontainer.json:これを自動で作成させようとしたらはまった(alpine-linuxが私ではうまくいかなかった)
  • docker-compose.yml:本当はdevcontainer.jsonとDockerfileだけで良さそうだが、ポート番号の指定がよく分からず、頼った。
  • Dockerfile:利用したいイメージ名を書く。docker-compose.ymlに寄せたので、ここはすっからかん。(※1)

参考として、MySQL8のイメージ作成した際のGithubを晒す。
dockerfile/MySQL8 at forBlog20200411 · riceflow/dockerfile · GitHub
※1 docker-compose.ymlでbuildと指定せずにimageを指定してしまえばDockerfileも不要であるが、今後の拡張性を考慮し冗長ではあるがDockerfileを指定

【参考リンク】
VSCodeでDockerを動かすという点においては、ここの情報を全面的に参考にさせて頂きました。
tech.actindi.net
docker-composerを用いてMySQLのイメージを作成する際に参考にさせて頂きました。
docker-composeでMySQL5.7を起動して接続してみた - Qiita

Visual Studio Code実践ガイド —— 最新コードエディタを使い倒すテクニック

Visual Studio Code実践ガイド —— 最新コードエディタを使い倒すテクニック

  • 作者:森下 篤
  • 発売日: 2020/02/21
  • メディア: 単行本(ソフトカバー)