デトフィア

プログラミング

vscodeのdevcontainerを利用する

開発環境を構築する際に利用する場合があります。私が以前いた場所では使っていました。OracleのDBサーバーを開発環境として構築する際にdevcontainerを使っていました
devcontainerを用意しておけばdockerのコマンドを使わなくてもコンテナの利用ができます

導入

拡張機能を入れておきます

  • Dev Containers

利用する

試しにRustの開発環境を作成します 何もファイルなどがない空のフォルダをvscodeで開きます ターミナルにてcargo -Vと入力します
もしもRustの環境がマシンにない人はコマンドがないというエラーになると思います

次に画面左下の><マークをクリックして、Reopen in Containerをクリックします

そのまま検索欄にrustを入力して、Rust devcontainerをクリックします

そのまま流れでデフォルトを選択して、最後は0個を選択のままOKボタンをクリックします

するとイメージのビルドなどが行われますのでそのまま待ちます

エクスプローラーに.devcontainerフォルダが作成されます

ターミナルにてcargo -Vを入力するとコマンドが利用できることがわかります 私の場合は自身の端末より新しいバージョンであることが確認できています

つまりコンテナの環境でコマンドが実行できているのです

そのままcargo initしてcargo runするとRustの実行までできます

.devcontainerフォルダにはdevcontainer.jsonができています

{
    "name": "Rust",
    "image": "mcr.microsoft.com/devcontainers/rust:1-buster",

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "rustc --version",

    // Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
    "remoteUser": "vscode"
}

このようにjsonファイルを元にコンテナを作成してくれるのです

自分で.devcontainerを作成する

また空フォルダを開いたら、Dockerfileを作成します

簡単にnodeを利用するだけです

FROM node:18
D:.
    Dockerfile
    
サブフォルダーは存在しません 

ただDockerfileを作っただけですね

ここまで出来たら、画面左下の><ボタンを押して今度はOpen folder in Contaierをクリックします

そして現在のフォルダを選択したら、fron Dockerfileを選択します

すると自動的に.devcontainerというフォルダとdevcontainer.jsonが作成され、コンテナが起動します
ターミナルからnode -vを実行します

Dockerfileに基づいたコンテナが作成されています