EC2(Amazon Linux)っぽいコンテナを動かして VSCode Dev Containers で開発環境にする
この記事の目的
この記事は VSCode の Dev Containers を使ってローカルで EC2(AmazonLinux) っぽいコンテナを動かすことがゴールです。
あくまでも "っぽい" コンテナなので EC2 完全再現とはいきませんが、手元でちょっとした確認がしたいときに使えそうです。
コンテナをつくる
準備
- 拡張機能 Remote Development インストール
VSCode 拡張機能の Remote Development にはコンテナ関連の拡張機能(Dev Containers など)がいろいろ含まれています。
Remote Development - Docker インストール
コンテナを動かすために Docker も必要です。
Install Docker Engine
設定ファイル
まずは Dev Containers の設定ファイルを置く場所として .devcontainer
ディレクトリを用意します。
さらに .devcontainer
ディレクトリにはコンテナビルド用の Dockerfile
と設定ファイルの devcontainer.json
を作ります。
mkdir .devcontainer
touch .devcontainer/Dockerfile .devcontainer/devcontainer.json
Dockerfile
Dockerfile
は amazonlinux:2
をベースに作ります。
AWS CLI などは自分でインストールしないといけないようです。他にも必要なパッケージがあれば適宜追加してください。
また、EC2 っぽさをだすために ec2-user
ユーザーも追加しています。
FROM amazonlinux:2
ARG UID=1000
# python3, awscli インストール
RUN amazon-linux-extras install -y \
python3.8 \
&& python3.8 -m pip install awscli
# その他ビルドに必要なパッケージ
RUN yum update && yum install -y \
shadow-utils \
sudo \
tar \
&& rm -rf /var/cache/yum/* \
&& yum clean all
# ec2-user ユーザー追加
RUN useradd -u ${UID} ec2-user \
&& echo "ec2-user ALL=NOPASSWD: ALL" >> /etc/sudoers
# python コマンドで python3.8 が実行できるようにエイリアス設定
RUN echo "alias python=python3.8" >> /home/ec2-user/.bashrc
USER ${UID}
devcontainer.json
devcontainer.json には VSCode 拡張機能向けの設定を記述します。
workspaceMount
, workspaceFolder
でマウントするディレクトリを指定できます。
こちらも "っぽさ" をだすために /home/ec2-user/playground
でターミナルを開くようにしました。指定がない場合は /workspaces/[カレントディレクトリ名]
になります。
{
"name": "AmazonLinuxPlayground",
"build": {
"dockerfile": "Dockerfile"
},
// カレントディレクトリをコンテナの /home/ec2-user/playground にマウント
"workspaceMount": "source=${localWorkspaceFolder},target=/home/ec2-user/playground,type=bind",
"workspaceFolder": "/home/ec2-user/playground",
// コンテナ内のユーザー指定
"remoteUser": "ec2-user",
"runArgs": [
"--privileged"
],
}
コンテナにアクセス
カレントディレクトリに .devcontainer
ディレクトリがある状態で Remote Explorer メニューから Open Folder in Container でコンテナを立ち上げることができます。ダイアログが表示されたら OK を選択してください。
# カレントディレクトリに `.devcontainer` がある
ls -a .
. .. .devcontainer
コンテナのビルドが終わるまでしばらく待つと、見た目はあまり変わりないですがターミナルの表示が [ec2-user@123456789 playground]
のようになっていると思います。
amazon-linux-extras や AWS CLI が使えるようになっていれば成功です。
sudo amazon-linux-extras install -y vim
aws --version
まとめ
サンプルリポジトリがあるのでよかったら手元で確認してみてください。
amazonlinux:2023
イメージも公開されているようなので、ローカルで試してみるのもよさそうです。
参考
amazonlinux
Change the default source code mount
Amazon Linux 2 の Dockerイメージから開発環境を作り Visual Studio Codeで接続してみる
Discussion