VSCodeからAWSへSSH接続してRemoteContainerを起動してみる

Contents

はじめに

VSCodeのRemoteContainerを利用してよく開発しているが、稀にPCのスペック的に動作が不安定になることがある。

WSLにアクセスして開発をしている場合でも、Dockerコンテナを複数立ち上げるなどするとPCにかなりの負荷をかけてしまっていることがある。

WSLへSSHのように接続しているのであれば、AWSのEC2のような外部LinuxにSSH接続しても同じように開発できるのでは?と思ったので、色んな知見を調べながら環境構築してみた。

VSCodeの設定を変える

VSCodeからDocker接続する上で少し設定が必要になるので、先に済ませておく。

(RemoteSSH、Dockerなどの拡張機能は必須条件なので割愛)

VSCodeの設定 (Settings or settings.json) で『DOCKER_HOST』を設定しておく。

# settings.json

"docker.environment": {
    "DOCKER_HOST": "ssh://your-remote-user@your-remote-machine-fqdn-or-ip-here"
}

EC2でインスタンスを起動する

AWSのEC2からインスタンスを作成、起動してみる。

インスタンスタイプは無料枠だと少し厳しかったので、今回は『t3.medium』にして作成してみる。

※無料枠の『t2.micro』でも起動は確認できたが、開発が進められる状況ではなかったので諦めた。

VSCodeからSSH接続する

インスタンスを起動できれば、以降はSSH接続して設定を変えていく。

まずはVSCodeからSSH接続できるようconfigファイルを書き換えていく。

# .ssh/config

Host AWS接続(任意)
    HostName (IPアドレス)
    User ec2-user
    IdentityFile (鍵のpemファイル)
    Port 22

本当はSSH接続のポートは変えておいた方がいいかもしれないが、今回は割愛。

ユーザ名が『ec2-user』となるので注意。

設定できればVSCodeからSSHで接続しておく。

インスタンス内の環境を整える

Dockerを実行できる環境を整える。ついでにGitもインストールしておく。

# In Instance

# パッケージのアップデート
$ sudo yum -y update

# Docker、Gitのインストール
sudo yum -y install docker git

# Dockerのスタート
$ sudo service docker start

# Dockerの自動起動の設定もあったが忘れたので、思い出せば追記する
# 思い出したので追記 (2023-12-11)
$ sudo systemctl enable docker

# Dockerの起動確認
$ sudo docker info

# ユーザの追加
$ sudo usermod -a -G docker ec2-user

##### ##### #####
# 一度インスタンスの再起動する
##### ##### #####

# Dockerの起動確認 (docker infoはsudoを使わない)
$ sudo service docker start
$ docker info

# Docker Composeのインストール (公式の通り)
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
$ docker compose version

まとめ

上記設定が済めば、あらかじめRemoteContainerを想定したGitリポジトリをクローンするなどすれば、そのまま開発へ移行できる。

(自分のプロジェクトだが、https://github.com/PONzu-0529/python-selenium-container など)

これで開発側のPCスペックを気にせず開発できるようになった。

その他

後日再度アクセスしようとすると『プロセスが存在しないパイプに書き込もうとしました』のエラーでVSCodeからSSH接続できないということが発生した。

調べてみると、接続元のIPアドレスが変わってしまっていたことが原因だった。

AWS側で自PCのIPアドレスからのみアクセスを許可する設定にしていたため、旧IPアドレスを許容して新IPアドレスが弾かれてしまっていた。

AWS側で新IPアドレスを許容するよう変更することで解消。

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です