---
title: "uv とカスタム Docker で実現する Pulumi パイプラインの高速化 | grasys blog"
url: "https://blog.grasys.io/post/komal-teke/speedingup-pulumipipelines-customdocker/"
description: "カスタムイメージを採用する理由 CI/CD パイプラインを初めて組むときは、まずはプラットフォームが用意しているプレビルドイメージに頼ることが多いと思います。 GitHub Actions や GitLab、そして私が使っている Google Cloud Build には、.NET や git、npm などの基本的な…"
---

# uv とカスタム Docker で実現する Pulumi パイプラインの高速化

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[Komal Teke](/authors/komal-teke/)
-   公開日：2025年12月3日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#CI/CD](/tags/ci-cd/)[#Google Cloud](/tags/google-cloud/)[#Cloud Build](/tags/cloud-build/)

![uv とカスタム Docker で実現する Pulumi パイプラインの高速化](/_astro/hero.CjPAmJ6e_EbC3G.webp)

## **カスタムイメージを採用する理由**

CI/CD パイプラインを初めて組むときは、まずはプラットフォームが用意しているプレビルドイメージに頼ることが多いと思います。  
GitHub Actions や GitLab、そして私が使っている Google Cloud Build には、.NET や git、npm などの基本的なツールがひと通りそろった [公式ビルダーイメージ](https://docs.cloud.google.com/build/docs/cloud-builders#supported_builder_images_provided_by) が用意されています。

しかし、プロジェクトで**よりモダンなツール**や**専門的なツール**が必要になった場合はどうでしょうか？

まさに、私もそこでつまずきました。  
私のプロジェクトは、標準の Cloud Build イメージにはどれも「両方まとめて」は入っていない、次の 2 つのツールに依存していました。

1.  [**uv**](https://docs.astral.sh/uv/) — a blazing-fast Python package manager
    
2.  [**Pulumi CLI**](https://www.pulumi.com/docs/iac/cli/) — for managing infrastructure as code
    

そこで、取りうる**選択肢は次の 2 つ**になりました。

1.  **The Slow Way:** パイプラインが実行されるたびに、ゼロから `uv` と `Pulumi` をインストールする。
    
2.  **The Smart Way:** すべてがプリインストールされた**カスタムイメージ**を構築する。
    

Cloud Build が**コミュニティビルダーだけでなく、フルカスタムのビルダーイメージもサポートしている**とわかった時点で、答えは決まりました。私は迷わず 2 番目の方法を選びました。

この記事は、そのときの自分が「こういうのが欲しかった」と思うガイドを形にしたものです。  
`uv` と `Pulumi` の両方を含む **[カスタム Cloud Build イメージ](https://docs.cloud.google.com/build/docs/configuring-builds/use-community-and-custom-builders)** を使って、高速で信頼性の高い CI/CD パイプラインを作るまでの手順をまとめました。

## Custom “Tools-Included” イメージのビルド

カスタムイメージを使うメリットが見えてきたところで、ここからは実際に作っていきます。

目標はシンプルで、CI/CD パイプラインで使うツール、とくに `uv` と `Pulumi` が最初から入っていて、そのまま使える Docker イメージを用意することです。

`uv` の大きな利点の 1 つは、**静的バイナリ**として配布されていることです。つまり `pip install` もコンパイルも、追加の依存関係も不要です。**マルチステージの `COPY`** を使用して、公式の `uv` コンテナから実行可能ファイルを直接取得できます。その結果、パイプライン実行のたびにツールをインストールするよりも、よりシンプルで高速、しかも安定したビルド環境を用意できます。

以下は、私が最終的に使用した `Dockerfile` です。

![Custom “Tools-Included” イメージのビルドの画面](/_astro/01-image-1-1024x464-bc7f14db.Dr4bGsf__lEAOU.webp)

ここまでできれば準備完了です。  
**これらのステップだけで、** `Python`、`uv`、`Pulumi`、そして重要なビルドツールを含む**カスタムイメージ**が完成しました。

## ****次のステップ：このイメージを CI/CD で使用する****

`Dockerfile` が用意できたら、次はそれを**実際に使えるコンテナイメージ**としてビルドし、CI/CD パイプラインから参照できるようにします。  
Google Cloud Build の場合は、そのイメージを **Artifact Registry** にプッシュしておけば OK です。

一度 Artifact Registry に入れば、どの Cloud Build パイプラインでも**即座に**それをプルできます。毎回のセットアップやツールの再インストールがほとんど不要になり、起動時間もかなり短くなります。

### **Step 1 — Build and Push the Image**

これらのコマンドを打つ前に、次の 2 点を確認しておきましょう。

-   **Artifact Registry** のリポジトリがすでに存在していること
    
-   `gcloud auth configure-docker` で認証済みであること
    

その上で、次のコマンドを実行します。

Plain textcontent\_copy

```
# Set a variable for your image tag to make it reusable
IMAGE_TAG="[LOCATION]-docker.pkg.dev/[YOUR-PROJECT-ID]/[YOUR-REPO-NAME]/[YOUR-IMAGE-NAME]"

# Build the image
# --platform is crucial for ensuring the image works in Cloud Build

docker buildx build . --platform linux/amd64 \
  -t $IMAGE_TAG \
  --load

# Push the image
docker push $IMAGE_TAG
```

このプッシュが完了すると、カスタムイメージは正式に Artifact Registry で公開され、CI/CD パイプラインを強化する準備が整います。

### **Step 2 — Use the Image in cloudbuild.yaml**

ここがすべてを結びつける部分です。

Cloud Build では、任意のコンテナイメージを使用して任意のステップを実行できます。そのため、イメージが Artifact Registry に保存された今、パイプラインへの追加は次のように簡単に行えます。

![cloudbuild.yamlでArtifact Registryのカスタムイメージを指定する設定](/_astro/02-image-7-1024x231-42ce4b9c.Dd2SbpZs_Z17UWS4.webp)

`name:` に先ほどのイメージ名を書くだけで、Cloud Build はそのカスタム `uv`+`Pulumi` イメージをプルし、その内部でこのステップを実行します。

実行のたびに**ツールをインストールする**必要はもうありません。  
**依存関係のインストールを待つ**時間もなくなります。  
**高速で、挙動の予測もしやすいビルド環境**を作りやすくなります。

最後に、今回は Cloud Build トリガー用のカスタムベースイメージを作成しました。次回は、 CI/CD パイプラインをさらに高速化する工夫をまとめてみる予定です。

※本記事の `Dockerfile` はあくまでサンプルです。実際のプロダクション環境では、社内のセキュリティポリシーに合わせてインストール方法やバージョン管理方法を調整してください。

## この記事を書いた人

[![](/_astro/komal-teke.vvtJae1f_ZxagEz.webp)](/authors/komal-teke/)

### [Komal Teke](/authors/komal-teke/)

Google Cloud、データエンジニアリング、生成AIを中心に、クラウド技術の検証や実装に取り組んでいます。

[プロフィールと記事一覧](/authors/komal-teke/)