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