当サイトは、アフィリエイト広告を利用しています

【Docker × VScode】コンテナにVScodeの拡張機能を一括インストールする

作成日:2023月12月27日
更新日:2023年12月27日

VScodeの拡張機能をでスクリプトで
一括インストールする方法を調べたので
まとめておく。

用途

VSCodeを使ってコンテナ開発をする場合などに
コンテナ開発環境にVScodeの拡張機能を一括でインストールできる。

プロジェクトに都合等でDev Containersが使えない場合は
docker-composeで作成したコンテナをVScodeからアタッチすることなる。

その場合、スクリプトを流せば拡張機能を一括でインストールすることができる

VScodeの拡張機能「Dev Containers」を使える場合は
VScodeからコンテナを作る場合はそちらで設定した方がいいと思う。
詳しくは下記記事で紹介しています

拡張機能をコンテナでスクリプトで一括インストールする

実際にコンテナを作り、スクリプトで拡張機能を
インストールしてみる

構成

下記のようなプロジェクト構成で試してみる

プロジェクト構成
.
|-- Dockerfile
|-- app
| `-- main.py
|-- docker-compose.yml
`-- vscode_ex_install.sh

pythonを実行できるコンテナを作成し
pythonのVScode拡張機能をスクリプトで
一括インストールする

Dockerfile

dockerfile
FROM python:3.10
# /workspaceディレクトリ作成
WORKDIR /workspace
  • imageはpython:3.10のイメージを使う
  • workspaceディレクトリ作成

docker-compose.yml

docker-compose.yml
version: "3"
services:
python3:
container_name: "container_python3"
build:
context: .
dockerfile: Dockerfile
volumes:
- ./:/workspace
tty: true
  • pythonのコンテナを作成

app/main.py

main.py
print("hellow world")

動作確認のために作成
PythonのVScode拡張機能がないと動かせない。

vscode_ex_install.sh

コンテナにインストールするVScodeの拡張機能
の識別子を記載する

vscode_ex_install.sh
#!/bin/bash
# 拡張機能のIDリスト
extensions=(
"ms-python.python"
"mhutchie.git-graph"
)
# 各拡張機能をインストール
for extension in "${extensions[@]}"; do
code --install-extension $extension
done

拡張機能の識別子のありか

拡張機能の識別子は下記に載っている

2023-12-27-01-48-28

2023-12-27-01-49-07

インストールしたい拡張機能が一つの場合

一つだけの場合は下記のように書くこともできる

vscode_ex_install.sh
code --install-extension ms-python.python

権限付与

作成したスクリプトを実行できるように
権限を付与しておく

権限付与
chmod +x vscode_ex_install.sh

コンテナ作成

コマンドでコンテナを作成する

GitBash
docker compose up -d

コンテナにVScodeからアタッチする

F1でコマンドパレットを開き
「実行中のコンテナにアタッチ」を洗濯 2023-12-27-01-55-51

実行中のコンテナが表示されるので選択する
2023-12-27-01-56-52

コンテナの拡張機能を確認する 2023-12-27-01-59-31 基本はこの二つか、日本語化の一つしかない
状態になっている。

コンテナ内でスクリプト実行

VScodeの拡張機能一括インストールスクリプトを
実行する

2023-12-27-02-02-51 コンテナに拡張機能が追加される

余談

コマンドでVScodeの拡張機能インストールができるなら
dcoker-compose内でCOMMANDオプションで指定すれば
コンテナ作成と同時に拡張機能のインストールができるかと思ったが
できない。とうかエラーになる。

まぁ、コンテナ開けた後にスクリプトを一回実行するだけなので
そんなに手間でもないし、一旦これで良しとした。

新着記事

タグ別一覧
top