.Net Aspireのホストプロジェクトに、ローカルのコンテナで起動するPostgreSQLを統合する方法です。
PostgreSQLの起動
AddPostgresメソッドでPostgreSQLのコンテナインスタンスを生成することができます。また生成したインスタンスに対して、AddDatabaseメソッドでデータベースを追加することができます。
var postgres = builder.AddPostgres("postgres");
var postgresdb = postgres.AddDatabase("postgresdb");
また、WithReferenceメソッドの引数に生成したデータベースの変数を指定することで、該当のプロジェクトのコンテナインスタンスの環境変数にConnectionStringsとして追加されます。
builder.AddProject<Projects.APISample>("APISample")
.WithReference(postgresdb);
PgAdminを一緒に起動する
AddPostgresのリソースに対して、WithPgAdminメソッドを追加するだけでpgAdminを一緒に起動させることができます。
var postgres = builder.AddPostgres("postgres")
.WithPgAdmin(); // 追加
初期化クエリの実行
ローカルの開発環境で使用する場合、データベースを建てただけでは使用できないので、一般的にはテーブルも併せて作成するケースがほとんどかと思います。
データベース作成時に実行するクエリのあるフォルダのパスをWithInitBindMountメソッドを使って指定することで、起動時にテーブルが作成された状態で使用することができます。
var postgres = builder.AddPostgres("postgres")
.WithInitBindMount(@"..\infra\db\init"); // 追加
ファイルパスは相対パス、もしくは絶対パスで指定します。また、フォルダ内に複数クエリファイルが存在する場合、文字順に実行されます。
ということでPostgreSQLを.Net Aspireホストプロジェクトに統合する方法でした。モダンな開発であればDockerComposeなどを使って開発環境を作るケースが多いと思いますが、.Net Aspireであれば接続周りのネットワークや認証などを自動で良しなにやってくれるので非常に楽に開発環境を用意することができます。