Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -443,3 +443,6 @@ FodyWeavers.xsd

# tmp directory
tmp/

# Transient Aspire publish manifest generated by the manifest verification tests
**/aspire-manifest.g.json
107 changes: 107 additions & 0 deletions samples/Metrics/MetricsApp.AppHost/aspire-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
{
"resources": {
"prometheus": {
"type": "container.v0",
"image": "prom/prometheus:v3.2.1",
"args": [
"--web.enable-otlp-receiver",
"--config.file=/etc/prometheus/prometheus.yml"
],
"bindMounts": [
{
"source": "../prometheus",
"target": "/etc/prometheus",
"readOnly": true
}
],
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"targetPort": 9090
}
}
},
"grafana": {
"type": "container.v0",
"image": "grafana/grafana:latest",
"bindMounts": [
{
"source": "../grafana/config",
"target": "/etc/grafana",
"readOnly": true
},
{
"source": "../grafana/dashboards",
"target": "/var/lib/grafana/dashboards",
"readOnly": true
}
],
"env": {
"PROMETHEUS_ENDPOINT": "{prometheus.bindings.http.url}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"targetPort": 3000
}
}
},
"otelcollector": {
"type": "container.v0",
"image": "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.123.0",
"bindMounts": [
{
"source": "../otelcollector/config.yaml",
"target": "/etc/otelcol-contrib/config.yaml",
"readOnly": false
}
],
"env": {
"ASPIRE_ENDPOINT": "http://localhost:18889",
"ASPIRE_API_KEY": "",
"ASPIRE_INSECURE": "true",
"PROMETHEUS_ENDPOINT": "{prometheus.bindings.http.url}/api/v1/otlp"
},
"bindings": {
"grpc": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"targetPort": 4317
},
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"targetPort": 4318
}
}
},
"app": {
"type": "project.v0",
"path": "../MetricsApp/MetricsApp.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{app.bindings.http.targetPort}",
"GRAFANA_URL": "{grafana.bindings.http.url}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
}
}
}
215 changes: 215 additions & 0 deletions samples/aspire-shop/AspireShop.AppHost/aspire-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
{
"resources": {
"postgres": {
"type": "container.v0",
"connectionString": "Host={postgres.bindings.tcp.host};Port={postgres.bindings.tcp.port};Username=postgres;Password={postgres-password.value}",
"image": "docker.io/library/postgres:18.3",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_USER": "postgres",
"POSTGRES_PASSWORD": "{postgres-password.value}"
},
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"targetPort": 5432
}
}
},
"catalogdb": {
"type": "value.v0",
"connectionString": "{postgres.connectionString};Database=catalogdb"
},
"basketcache": {
"type": "container.v0",
"connectionString": "{basketcache.bindings.tcp.host}:{basketcache.bindings.tcp.port},password={basketcache-password.value}{cond-basketcache-bindings-tcp-tlsenabled-8c2280ff.connectionString}",
"image": "docker.io/library/redis:8.6",
"entrypoint": "/bin/sh",
"args": [
"-c",
"redis-server --requirepass $REDIS_PASSWORD --save 60 1"
],
"volumes": [
{
"name": "aspireshop.apphost-<sha256>-basketcache-data",
"target": "/data",
"readOnly": false
}
],
"env": {
"REDIS_PASSWORD": "{basketcache-password.value}"
},
"bindings": {
"tcp": {
"scheme": "redis",
"protocol": "tcp",
"transport": "tcp",
"targetPort": 6379
}
}
},
"catalogdbmanager": {
"type": "project.v0",
"path": "../AspireShop.CatalogDbManager/AspireShop.CatalogDbManager.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{catalogdbmanager.bindings.http.targetPort}",
"ConnectionStrings__catalogdb": "{catalogdb.connectionString}",
"CATALOGDB_HOST": "{postgres.bindings.tcp.host}",
"CATALOGDB_PORT": "{postgres.bindings.tcp.port}",
"CATALOGDB_USERNAME": "postgres",
"CATALOGDB_PASSWORD": "{postgres-password.value}",
"CATALOGDB_URI": "postgresql://postgres:{postgres-password-uri-encoded.value}@{postgres.bindings.tcp.host}:{postgres.bindings.tcp.port}/catalogdb",
"CATALOGDB_JDBCCONNECTIONSTRING": "jdbc:postgresql://{postgres.bindings.tcp.host}:{postgres.bindings.tcp.port}/catalogdb",
"CATALOGDB_DATABASENAME": "catalogdb"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
},
"catalogservice": {
"type": "project.v0",
"path": "../AspireShop.CatalogService/AspireShop.CatalogService.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{catalogservice.bindings.http.targetPort}",
"ConnectionStrings__catalogdb": "{catalogdb.connectionString}",
"CATALOGDB_HOST": "{postgres.bindings.tcp.host}",
"CATALOGDB_PORT": "{postgres.bindings.tcp.port}",
"CATALOGDB_USERNAME": "postgres",
"CATALOGDB_PASSWORD": "{postgres-password.value}",
"CATALOGDB_URI": "postgresql://postgres:{postgres-password-uri-encoded.value}@{postgres.bindings.tcp.host}:{postgres.bindings.tcp.port}/catalogdb",
"CATALOGDB_JDBCCONNECTIONSTRING": "jdbc:postgresql://{postgres.bindings.tcp.host}:{postgres.bindings.tcp.port}/catalogdb",
"CATALOGDB_DATABASENAME": "catalogdb"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
},
"basketservice": {
"type": "project.v0",
"path": "../AspireShop.BasketService/AspireShop.BasketService.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{basketservice.bindings.http.targetPort}",
"ConnectionStrings__basketcache": "{basketcache.connectionString}",
"BASKETCACHE_HOST": "{basketcache.bindings.tcp.host}",
"BASKETCACHE_PORT": "{basketcache.bindings.tcp.port}",
"BASKETCACHE_PASSWORD": "{basketcache-password.value}",
"BASKETCACHE_URI": "{basketcache.bindings.tcp.scheme}://:{basketcache-password-uri-encoded.value}@{basketcache.bindings.tcp.host}:{basketcache.bindings.tcp.port}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http2"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http2"
}
}
},
"frontend": {
"type": "project.v0",
"path": "../AspireShop.Frontend/AspireShop.Frontend.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{frontend.bindings.http.targetPort}",
"BASKETSERVICE_HTTP": "{basketservice.bindings.http.url}",
"services__basketservice__http__0": "{basketservice.bindings.http.url}",
"BASKETSERVICE_HTTPS": "{basketservice.bindings.https.url}",
"services__basketservice__https__0": "{basketservice.bindings.https.url}",
"CATALOGSERVICE_HTTP": "{catalogservice.bindings.http.url}",
"services__catalogservice__http__0": "{catalogservice.bindings.http.url}",
"CATALOGSERVICE_HTTPS": "{catalogservice.bindings.https.url}",
"services__catalogservice__https__0": "{catalogservice.bindings.https.url}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"external": true
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http",
"external": true
}
}
},
"postgres-password": {
"type": "parameter.v0",
"value": "{postgres-password.inputs.value}",
"inputs": {
"value": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 22
}
}
}
}
},
"postgres-password-uri-encoded": {
"type": "annotated.string",
"value": "{postgres-password.value}",
"filter": "uri"
},
"basketcache-password": {
"type": "parameter.v0",
"value": "{basketcache-password.inputs.value}",
"inputs": {
"value": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 22,
"special": false
}
}
}
}
},
"basketcache-password-uri-encoded": {
"type": "annotated.string",
"value": "{basketcache-password.value}",
"filter": "uri"
},
"cond-basketcache-bindings-tcp-tlsenabled-8c2280ff": {
"type": "value.v0",
"connectionString": ""
}
}
}
Loading
Loading