Skip to content

kajiLabTeam/okarin

Repository files navigation

© 2026 kanakanho

全体構成

  • okarin
    • issueを管理するリポジトリ。issueと各リポジトリのPRを紐づけてアップデートを管理する
  • kaede
    • 今回のシステムの基幹リポジトリでモバイルからのデータを取得しPythonサーバーやDBとの接続などを行う
  • nozomi
    • Pythonパッケージを用いてセンサデータを処理するためのサーバー
  • rikka
    • ロジックに全集中したパッケージリポジトリ

ブランチ

999/feat-add-something イシュー番号/プレフィックス-ブランチ詳細

ローカル実行(最短)

kaede

cd apps/kaede
pnpm install
pnpm run dev

nozomi

cd apps/nozomi
uv sync --all-groups
uv run dev

HOSTPORT は環境変数で上書きできます。

HOST=0.0.0.0 PORT=8080 uv run start

コミット前チェック

このリポジトリはルートで lefthook を使います。

lefthook install

git commit 時に、kaedenozomi のチェックが両方実行されます。

kaede を手動で確認する場合:

cd apps/kaede
pnpm lint
pnpm exec prettier --check .
pnpm exec tsc --noEmit
pnpm build

nozomi を手動で確認する場合:

cd apps/nozomi
uv run ruff check .
uv run ruff format --check .
uv run mypy .
uv run pytest

CI 対応

  • apps/kaede/** を変更すると Kaede CI が実行されます(lint / format / typecheck / build / docker image build)。
  • apps/nozomi/** を変更すると Nozomi CI が実行されます(lint / format / typecheck / pytest / docker image build)。

Docker Compose 構成

  • compose.yml: 共通定義(kaede / nozomi
  • compose.local.yml: ローカル用オーバーレイ(postgres / seaweedfs 追加、ローカルビルド)
  • compose.test.yml: test 用オーバーレイ(ローカルに近い構成で test 用 env を使用)
  • compose.staging.yml: staging 用オーバーレイ(環境変数ファイルを staging に切替)
  • compose.production.yml: production 用オーバーレイ(環境変数ファイルを production に切替)

ローカル起動(app + postgresql + object storage)

初回はテンプレートから実ファイルを作成:

cp deploy/env/local.env.example deploy/env/local.env
cp deploy/apps/kaede.local.env.example deploy/apps/kaede.local.env
cp deploy/apps/storage-bootstrap.local.env.example deploy/apps/storage-bootstrap.local.env
cp deploy/seaweedfs/s3.local.conf.example deploy/seaweedfs/s3.local.conf
docker compose -p okarin-local -f compose.yml -f compose.local.yml up -d --build --remove-orphans

停止:

docker compose -p okarin-local -f compose.yml -f compose.local.yml down

ローカルの共通環境変数は deploy/env/local.env を使います。 kaedenozomi で共有する Sentry 設定は deploy/env/local.envkaede 用の S3 設定は deploy/apps/kaede.local.envstorage-bootstrap 用の認証情報は deploy/apps/storage-bootstrap.local.env を使います。

deploy/seaweedfs/s3.local.conf で S3 認証情報(accessKey / secretKey)を管理しています。 キーを変更する場合は deploy/seaweedfs/s3.local.confdeploy/apps/kaede.local.env / deploy/apps/storage-bootstrap.local.env の対応する値を同じに更新してください。 これら実ファイルは .gitignore で除外されるため、GitHubには上がりません。

test / staging / production の環境変数

  • deploy/env/test.env.example をベースに test 用の共通 env 実ファイルを作成してください。
  • deploy/apps/kaede.test.env.example をベースに test 用の kaede env を作成してください。
  • deploy/apps/storage-bootstrap.test.env.example をベースに test 用の storage-bootstrap env を作成してください。
  • deploy/seaweedfs/s3.test.conf.example をベースに test 用の SeaweedFS 実ファイルを作成してください。
  • deploy/env/staging.env.exampledeploy/env/production.env.example をベースに共通 env の実ファイルを作成してください。
  • deploy/apps/kaede.staging.env.exampledeploy/apps/kaede.production.env.example をベースに kaede 用 env を作成してください。
  • deploy/apps/storage-bootstrap.staging.env.exampledeploy/apps/storage-bootstrap.production.env.example をベースに storage-bootstrap 用 env を作成してください。
  • deploy/seaweedfs/s3.staging.conf.exampledeploy/seaweedfs/s3.production.conf.example をベースに SeaweedFS の実ファイルを作成してください。
  • 各環境の compose override が対応する env_file を持ちます。必要なら ENV_FILE で上書きできます。

test 手動デプロイ

ENV_FILE=./deploy/env/test.env \
docker compose -p okarin-test -f compose.yml -f compose.test.yml up -d --build --remove-orphans

停止:

ENV_FILE=./deploy/env/test.env \
docker compose -p okarin-test -f compose.yml -f compose.test.yml down

staging 手動デプロイ

ENV_FILE=./deploy/env/staging.env \
docker compose -p okarin-staging -f compose.yml -f compose.staging.yml up -d --build --remove-orphans

production 手動デプロイ

ENV_FILE=./deploy/env/production.env \
docker compose -p okarin-production -f compose.yml -f compose.production.yml up -d --build --remove-orphans

停止:

ENV_FILE=./deploy/env/production.env \
docker compose -p okarin-production -f compose.yml -f compose.production.yml down

SSH デプロイスクリプト

環境ごとにデプロイスクリプトを分ける想定です。

./deploy/scripts/deploy-test.sh [release_ref]
./deploy/scripts/deploy-staging.sh [release_ref]
./deploy/scripts/deploy-production.sh [release_ref]
  • 各スクリプト内で対象環境を固定しています
  • 各スクリプトは docker compose を直接実行します
  • 既定では sudo docker compose を使います。不要な環境では DOCKER_COMPOSE_BIN='docker compose' で上書きしてください
  • docker inspect も既定では sudo /usr/bin/docker を使います。不要な環境では DOCKER_BIN='docker' で上書きしてください
  • postgresseaweedfs だけを pull し、kaedenozomiup --build で更新します
  • 各スクリプトは postgres / seaweedfs 起動後に dbmate upstorage-bootstrap を実行してからアプリを起動します
  • deploy 成功時の revision は /var/tmp/okarin/revisions/*.last_successful に保存します
  • 引数が空なら SSH_ORIGINAL_COMMAND を使います
  • それも空なら main を deploy 対象にします

rollback 手順

直前に成功した revision は以下で確認できます。

cat /var/tmp/okarin/revisions/staging.last_successful
cat /var/tmp/okarin/revisions/production.last_successful

手動 rollback は、保存済みの REVISION をそのまま deploy スクリプトへ渡して実行します。deploy スクリプトは branch / tag / commit SHA のいずれも受け付けます。

REVISION=$(sed -n 's/^REVISION=//p' /var/tmp/okarin/revisions/staging.last_successful)
./deploy/scripts/deploy-staging.sh "$REVISION"
REVISION=$(sed -n 's/^REVISION=//p' /var/tmp/okarin/revisions/production.last_successful)
./deploy/scripts/deploy-production.sh "$REVISION"

注意:

  • DB migration を含むため、rollback 対象 revision が現在の DB スキーマと互換かを確認してください
  • deploy 失敗時は docker compose ps と各サービスログを確認してから rollback を判断してください

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors