😇

WSL2でCodebuildの標準ビルドイメージを動かす

2021/10/10に公開

概要

注)Docker上ではなくWSL2上だよ。ある程度AWSの知識がある人向け。

WindowsでサクッとAWS開発環境を構築したいと思ってふと思ったんですよ。
Codebuildの標準イメージって最初から色々入ってますよね。
dockerとかnpmとかsbtとかaws cliとか...
そんな「このイメージをWSLで使えたらなんとなく便利そう」という浅はかな考えのもと、この記事は書かれています。

やってみる

WSL2入れてない人

windows11だと楽。みんなwindows11入れて僕と一緒に人柱になろうよ(悪魔の囁き)

  1. BIOSからIntel VT-x or AMD-Vを有効化

windows11の人

  1. WSL2をインストール

powershell

wsl --install

windows10の人

  1. WSL2をインストール

powershell

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 最新のパッケージをダウンロードして実行
  1. WSL2を有効化

powershell

wsl --set-default-version 2

ubuntuを入れる

今回は主に、このubuntu上で作業する。

powershell

wsl --install -d Ubuntu-20.04

インストール後にユーザー名、パスワードを聞かれるので入力する

aws-codebuildイメージを落とす

ここでインストールするdockerはたぶん今回しか使わない。

WSL2のubuntu上で実行(bash)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install -y docker-ce
sudo service docker start
git clone https://github.com/aws/aws-codebuild-docker-images.git
cd aws-codebuild-docker-images/ubuntu/standard/5.0
echo "RUN env >> /root/.bash_profile" >> Dockerfile # ENVで設定された環境変数はdocker exportしたとき消えるため
sudo docker build -t aws/codebuild/standard:5.0 . #長い。ウマ娘で暇をつぶすなりapexやるなりご自由に。
# 作業ディレクトリは次の手順でも引き続き使う

WSL2で動かす

  1. dockerのイメージからrootfsを抽出

WSL2のubuntu上で実行(bash)

sudo docker export $(sudo docker create aws/codebuild/standard:5.0) | gzip -c > rootfs.tar.gz
  1. wsl-toycをダウンロードして解凍

https://github.com/noumia/wsl-toyc

  1. イメージを置きたい場所に「イメージ名」でフォルダを作る
    ex.D:\wsl\aws-codebuild-ubuntu-standard-5.0
    この場合aws-codebuild-ubuntu-standard-5.0がイメージ名になる
  2. 3.で作成したフォルダに2.で解凍したcreate-toyc.exeと1.で作成したrootfs.tar.gzを配置
  3. create-toyc.exeを管理者で実行

さいごに

これでvscode上などから見えるようになってるはずです。
もし見えない場合は再起動などしてください。
また作業途中で入れたubuntuは不要なので、消してもらっても大丈夫です。
このイメージはpyenvとかnとか、仮想環境に複数バージョン入っています。
好きなバージョンに切り替えて使うことができます。
どのバージョンが使えるのかわからなかったり、バージョンを切り替えるコマンドがわからないときはaws-codebuild-docker-imagesリポジトリのruntimes.ymlを見てください。
これは、Codebuildを動かすときのbuildspec.ymlruntime-versions:を指定したときに動くコマンドの定義ファイルです。

Discussion