はじめに🤔
VS Code 拡張機能の Remote Containers を使ったときにコンテナ内でコマンド実行させるには postCreateCommand
, postStartCommand
, postAttachCommand
プロパティで指定すればいい。
が、devcontainer.jsonのリファレンスを見ても、実際にどのタイミングで実行されるのかいまいち分からなかったのでメモ。
なお下記バージョンでの確認であることに注意。
GitHubのIssue見てると実行タイミングについて変更されているので、今後のバージョンによって変わることは十分ありえる。
App | Version |
---|---|
VS Code |
1.52.1 |
Remote-Containers |
0.154.1 |
各プロパティの実行タイミング🏄
テスト用に devcontainer.json
ファイルを書いて確認した結果が以下の表。
.devcontainer/devcontainer.json
{
"name": "Test for devcontainer",
"image": "alpine:3.12",
"extensions": ["mhutchie.git-graph"],
"postAttachCommand": "echo '---Attach---'",
"postCreateCommand": "echo '---Create---'",
"postStartCommand": "echo '--Start---'"
}
Property | Desc |
---|---|
|
コンテナ作成後、dotfiles や拡張機能のインストール前に実行される。 |
|
VS Code Server 接続後に実行される。 |
|
|
各コマンドは remoteUser によって実行される(デフォルトは root )。 |
Figure 1. Remote Containers 実行フロー
おわりに🐾
とりあえず postCreateCommand
を使っておけば大丈夫かと思ったけど、意外とそうでもなかった。
コマンドを1度だけ実行したいのか、毎回実行したいのかで使い分ける必要がわかってよかった。