VScodeのRemote Container拡張機能を使ってみて「すごく便利だなー」と思ったんですが
知っておくべき前提知識が多くて混乱したので、頭の整理のために色々メモしておきます。
Remote Container拡張機能とは?
以下のようなことができるVScodeの拡張機能です。
- VScodeからDockerを制御できる
- Dockerの1つのコンテナ内に「VScodeサーバー」なるソフトをインストールして、そのサーバーにローカルのVScodeから接続して、あたかもローカルのVScodeを操作しているような感覚で、Docker内のVScodeを操作できる
😇😇😇???
ちょっと自分でも何言ってるのか分からないのですが
ムリやり図解すると以下のような感じです、おそらく。。
流れとしては
- Remote Containerから「どのコンテナを立ち上げるか?」を指定する
Dockerfile
、docker-compose.yml
、image
名を直接指定という3つの方法がある- 複数のコンテナを立ち上げる場合は、どのコンテナの中に入るか(VScodeサーバーをインストールして接続するか)も指定する
- Remote ContainerがDockerに対して「指定したコンテナ(複数ある場合はすべて)を立ち上げろ」と命令する
- Dockerがコンテナを立ち上げると、Remote Containerがプロジェクトフォルダ直下に
.devcontainer
というフォルダを作る .devcontainer
フォルダの中にはdevcontainer.json
やdocker-compose.yml
などのファイルが作られるdevcontainer.json
がRemote Containerのメインの設定ファイル。
- Dockerがコンテナを立ち上げると、Remote Containerがプロジェクトフォルダ直下に
みたいな感じです。
Remote Containerを使うメリット
以下のようなことがメリットだと思われます。
- コンテナを立ち上げる必要がなくなる
- VScode上で
devcontainer.json
(と必要に応じてDockerfile
やdocker-compose.yml
など)を指定するだけで、Dockerのイメージのpullから立ち上げまですべてやってくれるので、Dockerをコマンドラインから操作する必要がない。
- VScode上で
- 仮想環境の共有が一瞬できる
devcontainer.json
(と必要に応じてDockerfile
やdocker-compose.yml
など)を共有するだけで、仮想環境をシェアできる。しかも数分で。
- VScodeの拡張機能まで共有できる
devcontainer.json
にVScodeサーバーにインストールする拡張機能を書いておけば、拡張機能まで共有できる。
1行でまとめるなら
「VScodeとDockerの2つさえ入れておけば、Dockerのコマンドを打つ必要すらなく、参加したい開発プロジェクトのメンバーと同一の開発環境をすぐに構築できる!」
のがメリットだと思われます。(凄すぎる)
インストール
VScodeのマーケットプレイスから
Remote - Containers
という拡張機能をインストールします。
ちなみに
Remote Development
という拡張機能をインストールすると
Remote - WSL
Remote - Containers
Remote - SSH
という3つの拡張機能を同時インストールできるのですが、この3つはすべて仮想環境を使った開発に役立つものなのでこっちをインストールしてもいいと思います。
使い方
例えば、以下のようなdocker-compose.yml
を使ってコンテナを構築したい場合、
version: '3' services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: pass ports: - '3307:3307' networks: - default app: image: node:lts environment: - TZ=Asia/Tokyo - DEBUG=app:* tty: true ports: - '3000:3000' volumes: - ./src:/workspace/src working_dir: /workspace/src networks: - default depends_on: - mysql networks: default:
以下のように操作します。
- プロジェクトフォルダを作る
- プロジェクトフォルダの中に
docker-compose.yml
を作る - VScodeで以下のように操作する
- 左下の
><
みたいなボタンを押す Remote Containers:Reopen in Container
→From:docker-compose.yml
→app
(入りたいコンテナ)を選択をクリック
- 左下の
これで、VScode経由で、appコンテナの中のVScodeサーバーを操作することできます。
使ってみた感想としては、ローカルで走らせるのと比較すると動作が重いです。
ただ、node_module
などのフォルダをマウント対象外とすることである程度高速化するみたいです。(未確認)
おわり
コメント