Closed8

vscodeのdevcontainerをリモートサーバで実行する(ubuntu)

not75743not75743

普段はこのようにローカルのvscode devcontainer on ubuntuマシンで作業しているが

コンテナ周りをいろいろ試してみると、イメージpull時のスピードが気になってしまう。(筆者環境がモバイルwifiのため、少しパワー不足を感じる...)
今後のためにEC2にRemoteSSHし、devcontainer開発をする方法を模索する。
こんな感じ

not75743not75743

参考ページ
https://code.visualstudio.com/remote/advancedcontainers/develop-remote-host

  1. Follow the installation and SSH host setup steps for the Remote - SSH extension.
  2. Optional: Set up SSH key based authentication to the server so you do not need to enter your password multiple times.
  3. Install Docker on your SSH host. You do not need to install Docker locally.
  4. Follow the quick start for the Remote - SSH extension to connect to a host and open a folder there.
  5. Use the Dev Containers: Reopen in Container command from the Command Palette (F1, Ctrl+Shift+P).

https://zenn.dev/bells17/articles/remote-ssh-devcontainer#devcontainerサーバーの環境構築
大変参考にさせていただきました。感謝

not75743not75743

1.2.3は対象のサーバにSSHできるまでやればよさげ
docker、docker-composeもOK

$ ssh test-server docker --version
Docker version 20.10.22, build 3a2c30b
$ ssh test-server docker compose version
Docker Compose version v2.14.1

dockerのインストール手順は公式そのまま
https://docs.docker.com/engine/install/ubuntu/

not75743not75743

Follow the quick start for the Remote - SSH extension to connect to a host and open a folder there.

remoteSSHで接続し、workディレクトリを作成しそれを開く

not75743not75743

フォルダ構成

フォルダ構成
.
├── .devcontainer
│   └── devcontainer.json
├── Dockerfile
├── docker-compose.yaml
└── main.go

Dockerfile

Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/go:1.18
RUN apt update
ENV GO111MODULE on
WORKDIR /code

docker-compose.yaml

docker-compose.yaml
version: '3'
services:
  app:
    build: .
    tty: true
    command: /bin/bash
    volumes:
      - .:/code

devcontainer.json

.devcontainer/devcontainer.json
{
    "name": "golang",
    "dockerComposeFile": "../docker-compose.yaml",
    "service": "app",
    "settings": {},
	"workspaceFolder": "/code",
	"customizations": {
		"vscode": {
			"extensions": [
				"golang.go"
			]
		}
	}
}
not75743not75743

接続できた🎉

vscode ➜ /code $ id
uid=1000(vscode) gid=1000(vscode) groups=1000(vscode),998(nvm),999(golang)
vscode ➜ /code $ go run main.go 
Hello, World!

拡張機能ももちろんOK

ユーザ、グループがvscodeであるため、ディレクトリ共有する場合、OS側にユーザ、グループを作っておくとスムーズかもしれない

このスクラップは2023/01/02にクローズされました