Skip to content

Commit 8d2aac4

Browse files
authored
Make secrets in docker compose placeholders (#8030)
* Make secrets in docker compose placeholders - Longer term we may have to replace this approach to hoist secrets and any env variable that uses secrets out of the file altogether.
1 parent b900b4f commit 8d2aac4

File tree

3 files changed

+82
-10
lines changed

3 files changed

+82
-10
lines changed

playground/publishers/Publishers.AppHost/Program.cs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,7 @@
2222
// Do stuff here.
2323
});
2424

25-
var db = builder.AddAzurePostgresFlexibleServer("pg")
26-
.WithPasswordAuthentication()
27-
.RunAsContainer(c =>
28-
{
29-
c.WithPgAdmin(c =>
30-
{
31-
c.WithHostPort(15551);
32-
});
33-
})
34-
.AddDatabase("db");
25+
var db = builder.AddPostgres("pg").AddDatabase("db");
3526

3627
var dbsetup = builder.AddProject<Projects.Publishers_DbSetup>("dbsetup")
3728
.WithReference(db).WaitFor(db);
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
services:
2+
pg:
3+
image: "docker.io/library/postgres:17.2"
4+
environment:
5+
POSTGRES_HOST_AUTH_METHOD: "scram-sha-256"
6+
POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256 --auth-local=scram-sha-256"
7+
POSTGRES_USER: "postgres"
8+
POSTGRES_PASSWORD: "${PG_PASSWORD}"
9+
ports:
10+
- "8000:5432"
11+
networks:
12+
- "aspire"
13+
dbsetup:
14+
environment:
15+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
16+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
17+
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
18+
ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
19+
HTTP_PORTS: "8002"
20+
ConnectionStrings__db: "Host=pg;Port=5432;Username=postgres;Password=${PG_PASSWORD};Database=db"
21+
ports:
22+
- "8002:8001"
23+
- "8004:8003"
24+
networks:
25+
- "aspire"
26+
api:
27+
environment:
28+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
29+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
30+
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
31+
ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
32+
HTTP_PORTS: "8006"
33+
ConnectionStrings__db: "Host=pg;Port=5432;Username=postgres;Password=${PG_PASSWORD};Database=db"
34+
ports:
35+
- "8006:8005"
36+
- "8008:8007"
37+
networks:
38+
- "aspire"
39+
sqlserver:
40+
image: "mcr.microsoft.com/mssql/server:2022-latest"
41+
environment:
42+
ACCEPT_EULA: "Y"
43+
MSSQL_SA_PASSWORD: "${SQLSERVER_PASSWORD}"
44+
ports:
45+
- "8009:1433"
46+
volumes:
47+
- type: "volume"
48+
target: "/var/opt/mssql"
49+
source: "sqlserver-data"
50+
read_only: false
51+
networks:
52+
- "aspire"
53+
frontend:
54+
environment:
55+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
56+
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
57+
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
58+
ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
59+
HTTP_PORTS: "8011"
60+
ConnectionStrings__sqldb: "Server=sqlserver,1433;User ID=sa;Password=${SQLSERVER_PASSWORD};TrustServerCertificate=true;Database=sqldb"
61+
services__api__http__0: "http://api:8005"
62+
services__api__https__0: "https://api:8007"
63+
ports:
64+
- "8011:8010"
65+
- "8013:8012"
66+
networks:
67+
- "aspire"
68+
networks:
69+
aspire:
70+
driver: "bridge"
71+
volumes:
72+
sqlserver-data:
73+
driver: "local"

src/Aspire.Hosting.Docker/DockerComposePublishingContext.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,14 @@ private static Task<string> ResolveParameterValue(IManifestExpressionProvider pa
434434
throw new InvalidOperationException("Parameter is not a ParameterResource");
435435
}
436436

437+
if (res.Secret)
438+
{
439+
// Treat secrets as environment variable placeholders as for now
440+
// this doesn't handle generation of parameter values with defaults
441+
var env = res.Name.ToUpperInvariant().Replace("-", "_");
442+
return Task.FromResult($"${{{env}}}");
443+
}
444+
437445
return Task.FromResult(res.Value);
438446
}
439447

0 commit comments

Comments
 (0)