Skip to content
Merged
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
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Kafka/KafkaContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static class KafkaContainerImageTags
/// <remarks>confluentinc/confluent-local</remarks>
public const string Image = "confluentinc/confluent-local";

/// <remarks>8.0.0</remarks>
public const string Tag = "8.0.0";
/// <remarks>8.1.0</remarks>
public const string Tag = "8.1.0";

/// <remarks>kafbat/kafka-ui</remarks>
public const string KafkaUiImage = "kafbat/kafka-ui";
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Keycloak/KeycloakContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static class KeycloakContainerImageTags
/// <remarks>keycloak/keycloak</remarks>
public const string Image = "keycloak/keycloak";

/// <remarks>26.3</remarks>
public const string Tag = "26.3";
/// <remarks>26.4</remarks>
public const string Tag = "26.4";

// <remarks>1000</remarks>>
public const int ContainerUser = 1000;
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.MongoDB/MongoDBContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static class MongoDBContainerImageTags
/// <remarks>library/mongo</remarks>
public const string Image = "library/mongo";

/// <remarks>8.0</remarks>
public const string Tag = "8.0";
/// <remarks>8.2</remarks>
public const string Tag = "8.2";

/// <remarks>docker.io</remarks>
public const string MongoExpressRegistry = "docker.io";
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.MySql/MySqlContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static class MySqlContainerImageTags
/// <remarks>library/mysql</remarks>
public const string Image = "library/mysql";

/// <remarks>9.4</remarks>
public const string Tag = "9.4";
/// <remarks>9.5</remarks>
public const string Tag = "9.5";

/// <remarks>library/phpmyadmin</remarks>
public const string PhpMyAdminImage = "library/phpmyadmin";
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Nats/NatsContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ internal static class NatsContainerImageTags
/// <remarks>library/nats</remarks>
public const string Image = "library/nats";

/// <remarks>2.11</remarks>
public const string Tag = "2.11";
/// <remarks>2.12</remarks>
public const string Tag = "2.12";
}
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Oracle/OracleContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ internal static class OracleContainerImageTags
/// <remarks>database/free</remarks>
public const string Image = "database/free";

/// <remarks>23.9.0.0</remarks>
public const string Tag = "23.9.0.0";
/// <remarks>23.26.0.0</remarks>
public const string Tag = "23.26.0.0";
}
17 changes: 14 additions & 3 deletions src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,10 @@ public static IResourceBuilder<PostgresServerResource> AddPostgres(this IDistrib
.WithImage(PostgresContainerImageTags.Image, PostgresContainerImageTags.Tag)
.WithImageRegistry(PostgresContainerImageTags.Registry)
.WithEnvironment("POSTGRES_HOST_AUTH_METHOD", "scram-sha-256")
.WithEnvironment("POSTGRES_INITDB_ARGS", "--auth-host=scram-sha-256 --auth-local=scram-sha-256")
// PostgreSQL 18+ enables data checksums by default. We disable them to maintain backward compatibility
// with existing volumes that don't have checksums enabled, preventing initialization failures when
// reusing data directories from earlier versions.
.WithEnvironment("POSTGRES_INITDB_ARGS", "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums")
.WithEnvironment(context =>
{
context.EnvironmentVariables[UserEnvVarName] = postgresServer.UserNameReference;
Expand Down Expand Up @@ -369,8 +372,12 @@ public static IResourceBuilder<PostgresServerResource> WithDataVolume(this IReso
{
ArgumentNullException.ThrowIfNull(builder);

// PostgreSQL 18+ Docker images changed the data directory structure to use major-version-specific
// subdirectories (e.g., /var/lib/postgresql/data/18). The mount point must be /var/lib/postgresql
// instead of /var/lib/postgresql/data to accommodate this change. Prior to PostgreSQL 18, the
// mount point was /var/lib/postgresql/data.
return builder.WithVolume(name ?? VolumeNameGenerator.Generate(builder, "data"),
"/var/lib/postgresql/data", isReadOnly);
"/var/lib/postgresql", isReadOnly);
}

/// <summary>
Expand All @@ -385,7 +392,11 @@ public static IResourceBuilder<PostgresServerResource> WithDataBindMount(this IR
ArgumentNullException.ThrowIfNull(builder);
ArgumentException.ThrowIfNullOrEmpty(source);

return builder.WithBindMount(source, "/var/lib/postgresql/data", isReadOnly);
// PostgreSQL 18+ Docker images changed the data directory structure to use major-version-specific
// subdirectories (e.g., /var/lib/postgresql/data/18). The mount point must be /var/lib/postgresql
// instead of /var/lib/postgresql/data to accommodate this change. Prior to PostgreSQL 18, the
// mount point was /var/lib/postgresql/data.
return builder.WithBindMount(source, "/var/lib/postgresql", isReadOnly);
}

/// <summary>
Expand Down
8 changes: 4 additions & 4 deletions src/Aspire.Hosting.PostgreSQL/PostgresContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ internal static class PostgresContainerImageTags
/// <remarks>library/postgres</remarks>
public const string Image = "library/postgres";

/// <remarks>17.6</remarks>
public const string Tag = "17.6";
/// <remarks>18.0</remarks>
public const string Tag = "18.0";

/// <remarks>docker.io</remarks>
public const string PgAdminRegistry = "docker.io";

/// <remarks>dpage/pgadmin4</remarks>
public const string PgAdminImage = "dpage/pgadmin4";

/// <remarks>9.7.0</remarks>
public const string PgAdminTag = "9.7.0";
/// <remarks>9.9.0</remarks>
public const string PgAdminTag = "9.9.0";

/// <remarks>docker.io</remarks>
public const string PgWebRegistry = "docker.io";
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Qdrant/QdrantContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ internal static class QdrantContainerImageTags
/// <remarks>qdrant/qdrant</remarks>
public const string Image = "qdrant/qdrant";

/// <remarks>v1.15.4</remarks>
public const string Tag = "v1.15.4";
/// <remarks>v1.15.5</remarks>
public const string Tag = "v1.15.5";
}

4 changes: 2 additions & 2 deletions src/Aspire.Hosting.RabbitMQ/RabbitMQContainerImageTags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static class RabbitMQContainerImageTags
/// <remarks>library/rabbitmq</remarks>
public const string Image = "library/rabbitmq";

/// <remarks>4.1</remarks>
public const string Tag = "4.1";
/// <remarks>4.2</remarks>
public const string Tag = "4.2";

/// <remarks><inheritdoc cref="Tag"/>-management</remarks>
public const string ManagementTag = $"{Tag}-management";
Expand Down
14 changes: 7 additions & 7 deletions tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public async Task AddPostgresWithDefaultsAddsAnnotationMetadata()
env =>
{
Assert.Equal("POSTGRES_INITDB_ARGS", env.Key);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256", env.Value);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums", env.Value);
},
env =>
{
Expand Down Expand Up @@ -133,7 +133,7 @@ public async Task AddPostgresAddsAnnotationMetadata()
env =>
{
Assert.Equal("POSTGRES_INITDB_ARGS", env.Key);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256", env.Value);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums", env.Value);
},
env =>
{
Expand Down Expand Up @@ -226,7 +226,7 @@ public async Task AddDatabaseToPostgresAddsAnnotationMetadata()
env =>
{
Assert.Equal("POSTGRES_INITDB_ARGS", env.Key);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256", env.Value);
Assert.Equal("--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums", env.Value);
},
env =>
{
Expand Down Expand Up @@ -257,7 +257,7 @@ public async Task VerifyManifest()
"image": "{{PostgresContainerImageTags.Registry}}/{{PostgresContainerImageTags.Image}}:{{PostgresContainerImageTags.Tag}}",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums",
"POSTGRES_USER": "postgres",
"POSTGRES_PASSWORD": "{pg-password.value}"
},
Expand Down Expand Up @@ -300,7 +300,7 @@ public async Task VerifyManifestWithParameters()
"image": "{{PostgresContainerImageTags.Registry}}/{{PostgresContainerImageTags.Image}}:{{PostgresContainerImageTags.Tag}}",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums",
"POSTGRES_USER": "{user.value}",
"POSTGRES_PASSWORD": "{pass.value}"
},
Expand All @@ -326,7 +326,7 @@ public async Task VerifyManifestWithParameters()
"image": "{{PostgresContainerImageTags.Registry}}/{{PostgresContainerImageTags.Image}}:{{PostgresContainerImageTags.Tag}}",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums",
"POSTGRES_USER": "{user.value}",
"POSTGRES_PASSWORD": "{pg2-password.value}"
},
Expand All @@ -352,7 +352,7 @@ public async Task VerifyManifestWithParameters()
"image": "{{PostgresContainerImageTags.Registry}}/{{PostgresContainerImageTags.Image}}:{{PostgresContainerImageTags.Tag}}",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums",
"POSTGRES_USER": "postgres",
"POSTGRES_PASSWORD": "{pass.value}"
},
Expand Down
2 changes: 1 addition & 1 deletion tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ public void VerifyTestProgramFullManifest()
"image": "{{ComponentTestConstants.AspireTestContainerRegistry}}/{{PostgresContainerImageTags.Image}}:{{PostgresContainerImageTags.Tag}}",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256 --no-data-checksums",
"POSTGRES_USER": "postgres",
"POSTGRES_PASSWORD": "{postgres-password.value}",
"POSTGRES_DB": "postgresdb"
Expand Down
Loading