mise ベースの開発環境(LSP・タスクランナー用)とDocker実行
現在の構成
.devcontainer/・docker-compose.override.ymlは削除済み。リポジトリルートのmise.tomlでピン留めしたGo/Nodeをホストに直接インストールする(廃止された旧構成はcurrent-setup参照)。ただしこれはapp/workerをホスト上で直接実行するためではなく、エディタのLSP(gopls等)とmise-tasks/配下のタスクランナー(DBマイグレーション・E2Eテストのオーケストレーション)のため。app/worker自体は常にDockerコンテナで動かす(後述)。
[tools]go = "1.26.3"node = "22"Flutterはmise管理下に置かず、現状通り(flutterコマンド or 別途管理)。
セットアップ
mise install実行方法
- 主経路(Docker):
docker compose upでapp・worker・postgres・garageを全部コンテナ起動。airによるホットリロード(backend/cmd/app/air.toml・backend/cmd/worker/air.toml)はコンテナ内で有効で、ホスト側のファイル変更はボリュームマウント経由でコンテナに反映される。 - ホスト側で動くのはgoose・E2Eテストのオーケストレーションのみ:
mise run db-migrate(開発用DBへのマイグレーション適用)やmise run test-e2e(テスト用DB/バケットに向けたE2E検証、詳細はtesting/test-environment)は、ホストのGo/mise環境からlocalhost経由でPostgresに、あるいはdocker composeコマンド経由でコンテナを操作する。app/worker自体をホストでgo runする運用は想定していない。
ランタイムデータの配置
Postgres・Garageの永続データは、以前backend/直下にあったが、リポジトリルート直下の.data/(postgres/, garage-data/, garage-meta/、いずれもgitignore対象)に移動した。compose.ymlのボリュームマウントもこれに合わせて更新済み。
データ確認用GUIビューア(開発用)
compose.ymlに、アプリ本体とは無関係の開発補助サービスとして以下を追加している。自作せず既存OSSをそのまま使う方針。
- Adminer(
http://localhost:8081)— Postgresの中身をブラウザで確認。ログイン: System=PostgreSQL, Server=postgres, Username=cocot, Password=cocot, Database=cocot。 - Filestash(
http://localhost:8334)— Garage(S3互換)の中身をブラウザで確認。初回アクセス時に管理者パスワードを設定し、S3バックエンドとして Endpoint=http://garage:3900、Path style有効、アクセスキー/シークレットキーはbackend/cmd/app/.envのTMP_AUDIO_S3_ACCESS_KEY/TMP_AUDIO_S3_SECRET_KEYを設定する。設定はDocker named volume(filestash-config)に永続化される。
いずれもdocker compose up -d adminer filestashで個別起動できる。
Claude Codeのインストール
コンテナアタッチは不要。ホスト上でネイティブインストーラ、またはnpm install -g @anthropic-ai/claude-code(mise管理のNode使用)でインストールする。
エディタのLSP
ホストにGoツールチェインが直接入るため、gopls等のLSPが正常に機能する(旧devcontainer構成での既知課題は解消済み)。