AppRunとは
さくらクラウドのAppRunはコンテナで管理されたアプリケーションをデプロイすることができます。フルマネージドなサービスとなっていてトラフィックに応じた自動スケーリングやバージョン管理、段階的なデプロイやロールバックといった本番環境に必要な機能が提供されています。
なお現在(2025/09/07)はβ版として提供されているため、無料ですがSLAの対象外となるので利用する際には注意してください。(年内には正式サービス提供を開始するようです。)
試しにデプロイやってみる
公式のクイックスタートに沿って進めていきます。
まずはデプロイするコンテナアプリケーションを作成していきます。
ディレクトリ作成
mkdir my-app
cd my-app
アプリケーション側のファイル作成
今回はexpressを使用して、8080番ポートにリクエストが来たら 'Hello from AppRun!'
と返すような簡単なWebサーバーを作ります。
package.json
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"express": "^4.18.2"
}
}
app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello from AppRun!');
});
app.listen(8080, () => {
console.log('Server is running on port 8080');
});
Dockerfile作成
イメージを作成するためのDockerfileを定義します
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "app.js"]
ここからはさくらクラウド側の準備をしていきます。
まずはさくらクラウドにログインします。
コンテナレジストリ作成
Dockerイメージをpushする先のコンテナレジストリを作成します。
AppRunサイドバーから「 コンテナレジストリ 」を選択し、コンテナレジストリ名と公開設定(非公開)を入力して作成します
レジストリユーザーを作成
認証情報を持ったレジストリユーザーを作成します。これはコンテナレジストリへセキュアにアクセスするためです。
コンテナレジストリを作成した後「ユーザー」タブをクリックして「追加」をクリックし、ユーザー名(任意)、パスワード(任意)、ユーザー権限設定(All)を設定します。
コンテナイメージのビルドとプッシュ
プロジェクトのディレクトリでmy-appというタグ名をつけてイメージをビルドします
docker build --platform linux/amd64 -t my-app .
次にレジストリにpushするためログインします。
この際、先ほど作成したレジストリユーザーのユーザー名とパスワードを入力します。
docker login my-app.sakuracr.jp
続いて先ほどビルドしたmy-app
イメージにmy-app.sakuracr.jp/my-app:latest
でタグをつけます。
docker tag my-app my-app.sakuracr.jp/my-app:latest
最後に先ほど作成したイメージをコンテナレジストリにpushします。
docker push my-app.sakuracr.jp/my-app:latest
アプリケーションのデプロイ
最後にアプリケーションをデプロイします。
AppRunへアクセスして「アプリケーションを作成」を選択します。
アプリケーション設定の項目を入力します。
- アプリケーション名に任意の名前を入力(例:my-app)
- ポート設定:8080
- 自動スケーリング:1(デフォルト)
- リクエスト:300 Seconds(デフォルト)
次にコンテナの設定項目を入力します。
- コンテナイメージ:イメージ名を入力(例:my-app.sakuracr.jp/my-app:latest)
- ユーザー名:レジストリに設定したユーザー名を入力
- パスワード:レジストリに設定したパスワードを入力
- メモリー:512MiB(デフォルト)
- vCPU:1(デフォルト)
パケットフィルターやログ、メトリクスの設定については任意で変更してください。
作成するとデプロイされ、正常にデプロイされるとこのような画面が表示されます。
公開URLを踏むと以下のような画面が表示されることを確認できました!
最後に
簡単にコンテナアプリケーションのデプロイまでできました!
ただβ版だとアプリケーションのログを確認することができないので、何か問題が起きた時手探りでの問題解決になるのが不便に感じました。