フルスクラッチで作成したWebアプリをDockerイメージ化してAppRunで動かすしてみよう(第2回)

ネットアシスト開発チームのyu-kinjoです。今回は、WordPress等の既存のイメージを利用するのではなく、自前でフルスクラッチで作成したWebアプリケーションをDockerイメージ化して、さくらのクラウドの「AppRun」で動かすことを目指します。実際に自前で開発したWebアプリをAppRunで動かすにはどうしたらよいか、イメージがつかめることを目指します。

この記事は第2回です。前回の記事はこちらです。

ここから先は作成するさくらのクラウド上のリソースごとに料金が発生します。リソースの料金は公式の最新の情報をご確認ください。

目次

コンテナレジストリの設定とイメージのアップロード

では前回ビルドに成功したオリジナルWebアプリケーションDockerイメージ「sakura_app_run」をアップロードしていきます。まずは、さくらのクラウドのコントロールパネル上から「コンテナレジストリ」を作成し、イメージをアップロードする先の用意を行います。(※1)

「グローバル」→「コンテナレジストリ」

「作成」からコンテナレジストリを作成。

コンテナレジストリの作成では、以下のように設定しました。

名前ykinjo-app-images
コンテナレジストリ名ykinjo-app-images.sakuracr.jp
独自ドメイン未指定
公開設定非公開
説明AppRunテスト
タグ指定無し
アイコン指定無し

次に、コンテナレジストリにイメージをアップロード・ダウンロードするための「ユーザ」を追加します。作成したコンテナレジストリの「ユーザ」タブを開き、「追加」からユーザを追加していきます。

ユーザは以下のように設定しました。

ユーザ名任意のユーザ名を設定
パスワード任意のパスワードを設定
ユーザ権限設定All

コンテナレジストリ側の準備が済みましたので、イメージをアップロードしていきます。まずはお手元の環境上で、dockerコマンドから作成したコンテナレジストリにログインします。

>docker login ykinjo-app-images.sakuracr.jp
Username: <先程作成したユーザのユーザ名を入力>
Password: <先程作成したユーザのパスワードを入力>

Login Succeeded

ログインに成功したら、イメージに「タグ」を設定しておきます。タグの設定を行ったらアップロードが実行できます。

> docker tag sakura_app_run ykinjo-app-images.sakuracr.jp/sakura_app_run:latest

> docker push ykinjo-app-images.sakuracr.jp/sakura_app_run:latest

アップロードが完了すると、コンテナレジストリの「リポジトリ」タブからもアップロードしたイメージが見えるようになります。

※1: 2026年5月31日より、DockerHub等の既存コンテナレジストリからもAppRunがご利用いただけるようになったようです。AppRun共用型で外部のコンテナレジストリが利用可能になりました

データベースアプライアンスを起動

次に接続先となるDBをさくらのクラウドの「データベースアプライアンス」機能で作成していきます。データベースアプライアンスは「スイッチ」もしくは「ルータ+スイッチ」に接続する必要が有るため、先にそちらを作成していきます。

目的のゾーンが選択されている事を確認の上で「ネットワーク」→「スイッチ」→「追加」から、ルータ機能が有効なスイッチを作成します。

名前ykinjo-rt-sw-01
説明AppRunテスト用
タグ指定無し
アイコン指定無し
ルータはい
プリフィックス/28 (16IP)
帯域幅100Mbps共有
IPv6アドレス無効

ルータ+スイッチが作成できたら、データベースアプライアンスを作成していきます。

「アプライアンス」→「データベース」

「追加」から作成を行います。

以下のように設定を行いました。冗長化や定期バックアップなどが可能ですが、今回は一旦無効にしています。

冗長化無効
レプリケーション無効
クローン元データベース指定無し
データベースエンジンPostgreSQL
データベースバージョン14
ディスクサイズ10GB
暗号化無効
デフォルトユーザ名任意のDBユーザー名を設定
パスワード任意のDBパスワードを設定
接続先スイッチ5432
IPv4アドレス #1任意のIPアドレスを設定
ネットマスク28
ゲートウェイデフォルト値を利用
送信元ネットワーク未指定
定期バックアップバックアップしない
自動更新無効
モニタリングスイート無効
名前ykinjo_app_run_db
説明AppRunテスト
タグ指定無し
アイコン指定無し

作成が完了したらDBへの接続確認を行ってみます。手元の環境にインストール済みのPostgreSQLのCLIクライアントである psql コマンドで接続してみます。

>psql -h <DBのIPアドレスを入力> -U ykinjo_app_run_db_01
ユーザー ykinjo_app_run_db_01 のパスワード:

psql (18.3、サーバー 14.22)
SSL接続(プロトコル: TLSv1.3、暗号化方式: TLS_AES_256_GCM_SHA384、圧縮: オフ、ALPN: なし)
"help"でヘルプを表示します。

ykinjo_app_run_db_01=>

接続が出来ました。ここで先に示したSQLを参考にしながら、DB、テーブル、レコードを作成しておきます。操作方法はPostgreSQLの操作方法をご参照ください。一通り作成できたらDBから切断します。

AppRunの起動

Dockerイメージのアップロードに続いて、DBの作成も完了しましたので、いよいよAppRunを起動します。AppRunはさくらのクラウド管理画面のトップからアクセスします。

さくらのクラウドホーム「トップ」→「AppRun共用型」

「アプリケーションを作成」

以下のように設定していきます。公開ポートはイメージ側の設定と合わせて80とします。

アプリケーション名ykinjo_app_run_01
オートスケーリング1~1
スケールの目安同時リクエスト数100
リクエストタイムアウト60秒
コンテナイメージykinjo-app-images.sakuracr.jp/sakura_app_run:latest
ポート80
コンテナレジストリアクセス設定レジストリのユーザ名とパスワードを入力
リソース構成0.5vCPU / 1GiBメモリ
ヘルスチェック指定無し
構成名sakura_app_run:latest
パケットフィルタ利用設定適宜接続元になる自分自身のIPを設定
ログ利用設定利用しない(※コンテナの起動に失敗する場合は「利用する」に設定する事でログが確認できます)
メトリクス利用設定利用しない

さらに「変数」タブで必要な環境変数を設定します。DBの接続情報を環境変数として渡します。

DB_HOSTデータベースアプライアンスのIP
DB_NAMEsakura_app_db
DB_USERDBユーザー名を設定
DB_PASSDBパスワードを設定

これでコンテナが起動できます。起動出来たら公開URLが発行されるので、そのURLをWebブラウザで開く事で動作が確認できます。

目的のフルスクラッチ作成したWebアプリケーションが動作している事が確認出来ました。DBにも正常にアクセスできており、記事一覧と記事詳細が表示できます。

第1回~第2回まとめ

自前フルスクラッチで作成したWebアプリをDockerイメージ化、AppRunで実行、さらにDB部分をデータベースアプライアンスで作成し連携するところまで無事動かすことが出来ました。大まかなイメージとしてこういう形でWebアプリの公開が可能です。

ただし、これだけではWebアプリは完結しません。例えば、複数コンテナ構成で動かす際に、永続的な形でアップロードした画像ファイルを保存し表示したい場合は……?などなど、コンテナならではの課題がまだ有ります。更に次回探求していけたらと思います。

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト開発部の yu-kinjo です。

【取得資格】
・さくらのクラウド検定
・AWS Certified Solutions Architect - Associate
・AWS Certified AI Practitioner
・Oracle 認定Javaプログラマ SE6
・JSTQB テスト技術者資格 ファンデーションレベル
・CIW (Certified Internet Webprofessional) ファンデーション
・XML技術者育成推進委員会 XMLマスター ベーシックV2
・基本情報処理技術者
・初級システムアドミニストレータ

目次