😇
WSL2でCodebuildの標準ビルドイメージを動かす
概要
注)Docker上ではなくWSL2上だよ。ある程度AWSの知識がある人向け。
WindowsでサクッとAWS開発環境を構築したいと思ってふと思ったんですよ。
Codebuildの標準イメージって最初から色々入ってますよね。
dockerとかnpmとかsbtとかaws cliとか...
そんな「このイメージをWSLで使えたらなんとなく便利そう」という浅はかな考えのもと、この記事は書かれています。
やってみる
WSL2入れてない人
windows11だと楽。みんなwindows11入れて僕と一緒に人柱になろうよ(悪魔の囁き)
- BIOSから
Intel VT-x
orAMD-V
を有効化
windows11の人
- WSL2をインストール
powershell
wsl --install
windows10の人
- WSL2をインストール
powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 最新のパッケージをダウンロードして実行
- 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で動かす
- dockerのイメージからrootfsを抽出
WSL2のubuntu上で実行(bash)
sudo docker export $(sudo docker create aws/codebuild/standard:5.0) | gzip -c > rootfs.tar.gz
- wsl-toycをダウンロードして解凍
- イメージを置きたい場所に「イメージ名」でフォルダを作る
ex.D:\wsl\aws-codebuild-ubuntu-standard-5.0
この場合aws-codebuild-ubuntu-standard-5.0
がイメージ名になる - 3.で作成したフォルダに2.で解凍した
create-toyc.exe
と1.で作成したrootfs.tar.gz
を配置 -
create-toyc.exe
を管理者で実行
さいごに
これでvscode上などから見えるようになってるはずです。
もし見えない場合は再起動などしてください。
また作業途中で入れたubuntuは不要なので、消してもらっても大丈夫です。
このイメージはpyenvとかnとか、仮想環境に複数バージョン入っています。
好きなバージョンに切り替えて使うことができます。
どのバージョンが使えるのかわからなかったり、バージョンを切り替えるコマンドがわからないときはaws-codebuild-docker-images
リポジトリのruntimes.yml
を見てください。
これは、Codebuildを動かすときのbuildspec.yml
でruntime-versions:
を指定したときに動くコマンドの定義ファイルです。
Discussion