Open3

vscode-container-tools

ピン留めされたアイテム
yukipyukip

vscode に拡張機能 container-tools をつかって開発環境をつくる

windows11 pro : wsl2 ubuntu 24.04 sshd docker
windows11 home : vscode contanier-tools

どうも、 container-tools ではなく dev-container でないと、だめっぽいな。
いや、dev-container は home側のPCで動こうとしてるのでだめだわ。
あれ、そうでもないのか? 別の理由でうまくうごいてないのか。。。 なんだろぅ。

なんかあるのかもだけど、 dev container だけは ローカル側にはいってしまう。
container-tools はリモート側に入った。(どっちにインストールするかのボタンは表示されなかった。remote-ssh で接続してるときは、自動的にリモートなのだったのかな。)

ためしに golang もいれてみたけど、 インストール先の選択肢はなかったけど、リモートに入った。

リモート側に .devcontainer/devcontainer.json があったから、拡張機能がうまく自分でいれれなかったのかもしれないかな。 細かいチェックはしてない。

yukipyukip

これ自体、dev container を動かしていないと使わないファイルっぽいなぁ。
地味に container-tools だけ使うか。。。というか全部コマンドラインでやるか。。。

とりあえず dev container でなく container-tools でやるので、このファイルはボツ。

ポート指定するときとか、いろいろは .devcontainer/devcontainer.json に書くらしい
下のサンプルは gemini ちゃん作成

./.devcontainer/devcontainer.json
{
  // コンテナ環境の名前。VS Codeの表示に使われます
  "name": "My Project Dev Container",

  // Dockerイメージのビルド方法を指定
  "build": {
    // Dockerfileがある場所(コンテキスト)を、このファイルからの相対パスで指定
    "context": "..",
    // 使用するDockerfileの名前
    "dockerfile": "../Dockerfile"
  },

  // docker runコマンドに渡す引数を指定
  "runArgs": [
    // ホストのポート2225をコンテナのポート22にマッピング
    "-p",
    "2225:22",

    // コンテナに固定の名前を付ける
    "--name",
    "my-project-dev-container",

    // VS Codeを閉じたらコンテナを自動で削除する(開発中は便利です)
    "--rm"
  ],

  // VS Code自体の設定
  "customizations": {
    "vscode": {
      // この開発環境で自動的にインストール・有効化する拡張機能
      "extensions": [
        "ms-azuretools.vscode-docker",
        "github.copilot"
      ],
      // この開発環境内だけで適用されるVS Codeの設定
      "settings": {
        "terminal.integrated.shell.linux": "/bin/bash"
      }
    }
  },

  // コンテナが作成された後に一度だけ実行されるコマンド
  "postCreateCommand": "uname -a && echo 'Dev Container is ready!'",

  // コンテナ内で作業するときのユーザーを指定(Dockerfileで作成したユーザーなど)
  // "remoteUser": "vscode"
}

変数も使えるらしい
variablesだめみたいだなぁ。

{
  "name": "My App Container",

  // (1) 使用するイメージのバージョンを変数で定義
  "variables": {
    "IMAGE_TAG": "1.2.3"
  },

  // (2) 'build' の代わりに 'image' を使い、変数でイメージを特定
  "image": "my-cool-app:${variable:IMAGE_TAG}",

  // (3) runArgsでコンテナ名などを設定
  "runArgs": [
    "--name", "my-cool-app-${variable:IMAGE_TAG}-container"
  ]
}
yukipyukip

あ、 compose があったか。

services:
  ssh:
    image: ssh:2
    build: .
    container_name: ssh-2
    hostname: host-ssh2
    ports:
      - "2225:22"