Skip to content

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 別途管理)。

セットアップ

Terminal window
mise install

実行方法

  • 主経路(Docker): docker compose upappworkerpostgresgarageを全部コンテナ起動。airによるホットリロード(backend/cmd/app/air.tomlbackend/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をそのまま使う方針。

  • Adminerhttp://localhost:8081)— Postgresの中身をブラウザで確認。ログイン: System=PostgreSQL, Server=postgres, Username=cocot, Password=cocot, Database=cocot
  • Filestashhttp://localhost:8334)— Garage(S3互換)の中身をブラウザで確認。初回アクセス時に管理者パスワードを設定し、S3バックエンドとして Endpoint=http://garage:3900、Path style有効、アクセスキー/シークレットキーはbackend/cmd/app/.envTMP_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構成での既知課題は解消済み)。