はじめに
結論、公式サイトを見たらわかりやすかったのだけれども
いくつかハマったポイントがあるので記憶に残す
手順
大まかな手順はこちら
参考にしたサイトだけ残しておきます
- WSLインストール
参考:https://qiita.com/matarillo/items/61a9ead4bfe2868a0b86 - VSCodeインストール
参考:https://www602.math.ryukoku.ac.jp/Prog1/vscode-win.html - WSLへDockerインストール
WSLを起動して以下のサイトを参考にインストール
参考:https://zenn.dev/thyt_lab/articles/fee07c278fcaa8 - DevContainerの設定
ここから詳細な話題に入ります
DevContainerの設定
Dev Containerのインストールと初期設定
VSCodeを起動して「Dev Container」をインストール
※ポイント※WSLからの接続を有効化する
Dev Containersがインストールできたら、歯車 クリック
Dev Containers Execute in WSL にチェックを入れる ←これにチェックを入れるとVSCodeからWSLのDockerへ接続できるようになる
devcontainer+Docker-Composeを使って複数コンテナを作成する
参考:https://code.visualstudio.com/remote/advancedcontainers/connect-multiple-containers
公式を参考に、python用コンテナとnode用コンテナを1つずつ作ります。
※特にサービスが動いているわけでもなく、単に2つのコンテナがあるだけのシンプルなやつ
VSCodeを起動して、フォルダを用意して、以下の構成でファイルを作ります。
version: '3'
services:
python-api:
image: mcr.microsoft.com/devcontainers/python:1-3.12-bookworm
volumes:
# Mount the root folder that contains .git
- .:/workspace:cached
command: sleep infinity
links:
- node-app
# ...
node-app:
image: mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm
volumes:
# Mount the root folder that contains .git
- .:/workspace:cached
command: sleep infinity
# ...
{
"name": "Python Container",
"dockerComposeFile": ["../../docker-compose.yml"],
"service": "python-api",
"shutdownAction": "none",
"workspaceFolder": "/workspace/python-src"
}
{
"name": "Node Container",
"dockerComposeFile": ["../../docker-compose.yml"],
"service": "node-app",
"shutdownAction": "none",
"workspaceFolder": "/workspace/node-src"
}
※hello.pyとhello.jsは割愛
コンテナへの接続方法
Ctrl+Pでパレット起動して、"Dev Containers: Reopen in Container" 入力
接続するコンテナを尋ねられるのでPython Container 選択 ※実際はどちらでもいい
しばし待つとウィンドウが開きなおされ、コンテナへ接続できる
※コンテナが動いてなかったら、コンテナを立ち上げてから接続するようになる
ポイントは、左下に「Dev Containers: Python Container」と表示してること
左上はPYTHON SRC[DEV CONTAINER PYTHON CONTAINER]を表示して、
ソースコードはpyrhon-srcの中身しか表示されていないこと
右下のターミナルは、コンテナの中のディレクトになってます。
別のコンテナに移動する
python用コンテナに入れたので次はnode用コンテナへの接続に切り替える
python用コンテナに入っている状態でCtrl+Pでパレット開いて
「Dev Containers: Switch Container」入力
ここでもどっちのコンテナへ移動したいか選択できる
Node Container 選択
成功したら、ウィンドウが開きなおされて、node用コンテナの画面に切り替わる
コンテナから抜けて、前のフォルダに戻りたいとき
左下の「Dev Container: Node Container」をクリック
パレットが開くので、一番下までスクロールして。。。「Close Remote Connection」クリック
戻ってきました。でも、、フォルダがどこにも選択されてないので
Open Folderで前のフォルダを開きなおしました
でも、これで無事に帰ってこれたので成功でしょう…!
番外編:コンテナ接続してるときのコンテナの様子
コンテナの様子がみたいだけなら、WSLから見れる。
WSLを起動して以下実行
docker ps
Dev Containerはコンテナ接続をVSCodeからお手軽に操作するための仕組みなので
単純にコンテナ立ち上げて~とかだけであれば別にWSLから操作してもOK