Manifest
The manifest.json is a document which aspire generates
in order for it to work with different tooling.
If we run dotnet run --publisher manifest --output-path ./aspire-manifest.json
we get the following:
{ "$schema": "https://json.schemastore.org/aspire-8.0.json", "resources": { "secrets": { "type": "azure.bicep.v0", "connectionString": "{secrets.outputs.vaultUri}", "path": "secrets.module.bicep", "params": { "principalId": "", "principalType": "" } }, "username": { "type": "parameter.v0", "value": "{username.inputs.value}", "inputs": { "value": { "type": "string", "secret": true } } }, "password": { "type": "parameter.v0", "value": "{password.inputs.value}", "inputs": { "value": { "type": "string", "secret": true } } }, "messaging": { "type": "container.v0", "connectionString": "amqp://guest:{messaging-password.value}@{messaging.bindings.tcp.host}:{messaging.bindings.tcp.port}", "image": "docker.io/library/rabbitmq:4.0-management", "env": { "RABBITMQ_DEFAULT_USER": "guest", "RABBITMQ_DEFAULT_PASS": "{messaging-password.value}" }, "bindings": { "tcp": { "scheme": "tcp", "protocol": "tcp", "transport": "tcp", "targetPort": 5672 }, "management": { "scheme": "http", "protocol": "tcp", "transport": "http", "targetPort": 15672 } } }, "consumers": { "type": "project.v0", "path": "../User.Email/User.Email.csproj", "env": { "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true", "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true", "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory", "ConnectionStrings__messaging": "{messaging.connectionString}" } }, "auth": { "type": "container.v0", "connectionString": "Host={auth.bindings.tcp.host};Port={auth.bindings.tcp.port};Username={username.value};Password={password.value}", "image": "docker.io/library/postgres:16.4", "env": { "POSTGRES_HOST_AUTH_METHOD": "scram-sha-256", "POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256", "POSTGRES_USER": "{username.value}", "POSTGRES_PASSWORD": "{password.value}" }, "bindings": { "tcp": { "scheme": "tcp", "protocol": "tcp", "transport": "tcp", "port": 5433, "targetPort": 5432 } } }, "authdb": { "type": "value.v0", "connectionString": "{auth.connectionString};Database=100days_auth" }, "authapi": { "type": "project.v0", "path": "../Auth.Api/Auth.Api.csproj", "env": { "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true", "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true", "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory", "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true", "HTTP_PORTS": "{authapi.bindings.http.targetPort}", "ConnectionStrings__messaging": "{messaging.connectionString}", "ConnectionStrings__secrets": "{secrets.connectionString}", "ConnectionStrings__authdb": "{authdb.connectionString}" }, "bindings": { "http": { "scheme": "http", "protocol": "tcp", "transport": "http" }, "https": { "scheme": "https", "protocol": "tcp", "transport": "http" } } },// the rest removed for brevityThis is what tools like Aspir8, azd, and others
use to create container environments when you
want to publish your application.