Docker
Dockerを用いたデプロイ方法について学びます。
SquadbaseはDockerを用いたデプロイをサポートしています。 Dockerはアプリケーションとその依存関係をパッケージ化することで、異なる環境でも同じように動作することを保証し、ローカル環境と本番環境の差異を最小化します。
SquadbaseはDockerを用いたアプリケーションのデリバリーにおいて、以下のような機能・運用を実現します。
- セキュアなクラウド環境へのデプロイ
- 組み込みのユーザー認証
- ユーザーアナリティクス
- ログモニタリング
- ユーザーからのフィードバック収集
公式でサポートされていないフレームワークで構築したアプリやOSレベルのパッケージインストールしたアプリをSquadbaseにデプロイする際にもDockerは利用可能です。
Dockerfileを作成する
Dockerfileを作成して、あなたのアプリをパッケージ化します。Squadbaseでは、ビルドしたDockerイメージを用いてアプリをデプロイします。
デプロイ先の環境は、squadbase.ymlで指定するproviderによって異なります。
- AWS: AWS Lambdaをベースにした実行環境
- GCP: GCP CloudRunをベースにした実行環境
例として、公式サポートのフレームワークで使用しているDockerfileは以下の通りです。
Github連携を用いてデプロイする
squadbase.ymlを作成する
プロジェクトのコードベースのルートに squadbase.yml を作成します。例えばStreamlitアプリでDockerを用いてデプロイする場合には、以下のようになります。
例として、最もシンプルな squadbase.yml の内容は以下の通りです。
# squadbase.yml
version: '1'
build:
  context: .squadbase.ymlのカスタマイズについては、こちら をご覧ください。
GithubリポジトリをSquadbaseにインポートする
Squadbaseのダッシュボードのホーム画面から、Githubリポジトリをインポートします。インポートが完了すると、自動的にデプロイが開始されます。
プッシュしてデプロイ
アプリに変更を加えて、Githubリポジトリにプッシュしてデプロイします。プッシュが完了すると、自動的に新しいバージョンのデプロイが開始されます。
Squadbaseの機能を利用する
Squadbaseはデプロイメントだけでなく、組織向けアプリの開発・運用に便利な機能を提供しています。
ユーザー認証とメンバー管理
Squadbaseにデプロイされたアプリに、Squadbase上のチームメンバーがアクセスすると自動的にユーザー認証が行われます。アプリの公開設定がパブリックでない場合、この認証を通過したユーザーのみがアプリにアクセスできます。また、アプリへのアクセスを持つユーザーには、「プロジェクトロール」という設定値を与えることができます。
REST APIを用いて、プロジェクトロールを含むユーザー情報にアクセスすることができ、アプリの挙動をユーザーのロールに応じてカスタマイズすることができます。
Squadbaseのユーザー情報を取得するには、以下のように実装してください。
import requests
def get_user_info_from_cookie(cookie):
  subdomain = "your-subdomain"
  # Construct the URL for the POST request
  url = f"https://{subdomain}.squadbase.app/_sqcore/auth"
  token = cookie.get("__Host-squadbase-session")
  headers = {
      "Authorization": f"Bearer {token}"
  }
  response = requests.post(url, headers=headers)
  if response.status_code == 200:
      return response.json()
  else:
      return {"error": "Failed to retrieve user information"}
cookie = {"__Host-squadbase-session": "your-auth-token"}
user_info = get_user_info_from_cookie(cookie)
print(user_info)JavaScriptの場合は、@squadbase/serverをインストールして簡単に取得することができます。
import { createServerClient } from "@squadbase/server";
const client = createServerClient({
  projectId: "your-project-id",
  cookieOptions: {
    getCookie: () => {
      // Implement your cookie retrieval logic here
      // This should return the session cookie string
    },
    // You can set mock user data for local development
    // mockUser: {
    //   username: "test-user",
    //   email: "test@example.com",
    //   firstName: "Test",
    //   lastName: "User",
    //   iconUrl: null,
    //   roles: ["user"],
    // },
  },
});
// Get the current authenticated user
const user = await client.getUser();
console.log(user);
// {
//   username: string,
//   email: string,
//   firstName: string,
//   lastName: string,
//   iconUrl: string | null,
//   roles: string[]
// }ユーザーアナリティクス
Squadbaseは、ユーザーのアクセスログを収集し、ユーザーアナリティクスを提供します。SquadbaseにデプロイしたDockerアプリを、チームメンバーがどのくらい利用しているのかを把握することができます。
Squadbaseの組み込みのユーザーアナリティクスを利用するために、コードを追加する必要はありません。Dockerアプリをデプロイし、ダッシュボードからすぐにアナリティクスを確認することができます。

ログモニタリング
Squadbaseは、デプロイされたアプリのログを収集し、ログモニタリングを提供します。ログモニタリングを利用することで、アプリのデプロイやデプロイのバージョンごとのログを確認することができます。

フィードバック
Squadbase上にデプロイされたアプリには、自動でフィードバック用のコメントボックスが追加されます。チームメンバーはこのコメントボックスから、アプリのフィードバックを送信することができます。
