diff --git a/src/Aspire.Hosting.Kafka/KafkaContainerImageTags.cs b/src/Aspire.Hosting.Kafka/KafkaContainerImageTags.cs
index 617173ec59f..85c5a41ee49 100644
--- a/src/Aspire.Hosting.Kafka/KafkaContainerImageTags.cs
+++ b/src/Aspire.Hosting.Kafka/KafkaContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class KafkaContainerImageTags
/// confluentinc/confluent-local
public const string Image = "confluentinc/confluent-local";
- /// 8.0.0
- public const string Tag = "8.0.0";
+ /// 8.1.0
+ public const string Tag = "8.1.0";
/// kafbat/kafka-ui
public const string KafkaUiImage = "kafbat/kafka-ui";
diff --git a/src/Aspire.Hosting.Keycloak/KeycloakContainerImageTags.cs b/src/Aspire.Hosting.Keycloak/KeycloakContainerImageTags.cs
index 16774f2cf96..284c9d939e7 100644
--- a/src/Aspire.Hosting.Keycloak/KeycloakContainerImageTags.cs
+++ b/src/Aspire.Hosting.Keycloak/KeycloakContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class KeycloakContainerImageTags
/// keycloak/keycloak
public const string Image = "keycloak/keycloak";
- /// 26.3
- public const string Tag = "26.3";
+ /// 26.4
+ public const string Tag = "26.4";
// 1000>
public const int ContainerUser = 1000;
diff --git a/src/Aspire.Hosting.MongoDB/MongoDBContainerImageTags.cs b/src/Aspire.Hosting.MongoDB/MongoDBContainerImageTags.cs
index 755c5485da3..d3c8cf5427c 100644
--- a/src/Aspire.Hosting.MongoDB/MongoDBContainerImageTags.cs
+++ b/src/Aspire.Hosting.MongoDB/MongoDBContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class MongoDBContainerImageTags
/// library/mongo
public const string Image = "library/mongo";
- /// 8.0
- public const string Tag = "8.0";
+ /// 8.2
+ public const string Tag = "8.2";
/// docker.io
public const string MongoExpressRegistry = "docker.io";
diff --git a/src/Aspire.Hosting.MySql/MySqlContainerImageTags.cs b/src/Aspire.Hosting.MySql/MySqlContainerImageTags.cs
index 4cf4a86500a..b7710dcebfe 100644
--- a/src/Aspire.Hosting.MySql/MySqlContainerImageTags.cs
+++ b/src/Aspire.Hosting.MySql/MySqlContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class MySqlContainerImageTags
/// library/mysql
public const string Image = "library/mysql";
- /// 9.4
- public const string Tag = "9.4";
+ /// 9.5
+ public const string Tag = "9.5";
/// library/phpmyadmin
public const string PhpMyAdminImage = "library/phpmyadmin";
diff --git a/src/Aspire.Hosting.Nats/NatsContainerImageTags.cs b/src/Aspire.Hosting.Nats/NatsContainerImageTags.cs
index ba6b3683ba5..21492c4bf7a 100644
--- a/src/Aspire.Hosting.Nats/NatsContainerImageTags.cs
+++ b/src/Aspire.Hosting.Nats/NatsContainerImageTags.cs
@@ -11,6 +11,6 @@ internal static class NatsContainerImageTags
/// library/nats
public const string Image = "library/nats";
- /// 2.11
- public const string Tag = "2.11";
+ /// 2.12
+ public const string Tag = "2.12";
}
diff --git a/src/Aspire.Hosting.Oracle/OracleContainerImageTags.cs b/src/Aspire.Hosting.Oracle/OracleContainerImageTags.cs
index 13d8e021d14..bd23679dfba 100644
--- a/src/Aspire.Hosting.Oracle/OracleContainerImageTags.cs
+++ b/src/Aspire.Hosting.Oracle/OracleContainerImageTags.cs
@@ -11,6 +11,6 @@ internal static class OracleContainerImageTags
/// database/free
public const string Image = "database/free";
- /// 23.9.0.0
- public const string Tag = "23.9.0.0";
+ /// 23.26.0.0
+ public const string Tag = "23.26.0.0";
}
diff --git a/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs b/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs
index 780d65cc401..733d69b3cc8 100644
--- a/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs
+++ b/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs
@@ -106,7 +106,10 @@ public static IResourceBuilder 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;
@@ -369,8 +372,12 @@ public static IResourceBuilder 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);
}
///
@@ -385,7 +392,11 @@ public static IResourceBuilder 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);
}
///
diff --git a/src/Aspire.Hosting.PostgreSQL/PostgresContainerImageTags.cs b/src/Aspire.Hosting.PostgreSQL/PostgresContainerImageTags.cs
index 47ea5d5c0af..3910ca22668 100644
--- a/src/Aspire.Hosting.PostgreSQL/PostgresContainerImageTags.cs
+++ b/src/Aspire.Hosting.PostgreSQL/PostgresContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class PostgresContainerImageTags
/// library/postgres
public const string Image = "library/postgres";
- /// 17.6
- public const string Tag = "17.6";
+ /// 18.0
+ public const string Tag = "18.0";
/// docker.io
public const string PgAdminRegistry = "docker.io";
@@ -20,8 +20,8 @@ internal static class PostgresContainerImageTags
/// dpage/pgadmin4
public const string PgAdminImage = "dpage/pgadmin4";
- /// 9.7.0
- public const string PgAdminTag = "9.7.0";
+ /// 9.9.0
+ public const string PgAdminTag = "9.9.0";
/// docker.io
public const string PgWebRegistry = "docker.io";
diff --git a/src/Aspire.Hosting.Qdrant/QdrantContainerImageTags.cs b/src/Aspire.Hosting.Qdrant/QdrantContainerImageTags.cs
index d496512b569..35c592e68e3 100644
--- a/src/Aspire.Hosting.Qdrant/QdrantContainerImageTags.cs
+++ b/src/Aspire.Hosting.Qdrant/QdrantContainerImageTags.cs
@@ -11,7 +11,7 @@ internal static class QdrantContainerImageTags
/// qdrant/qdrant
public const string Image = "qdrant/qdrant";
- /// v1.15.4
- public const string Tag = "v1.15.4";
+ /// v1.15.5
+ public const string Tag = "v1.15.5";
}
diff --git a/src/Aspire.Hosting.RabbitMQ/RabbitMQContainerImageTags.cs b/src/Aspire.Hosting.RabbitMQ/RabbitMQContainerImageTags.cs
index 3973ed3d1d0..6c573260c26 100644
--- a/src/Aspire.Hosting.RabbitMQ/RabbitMQContainerImageTags.cs
+++ b/src/Aspire.Hosting.RabbitMQ/RabbitMQContainerImageTags.cs
@@ -11,8 +11,8 @@ internal static class RabbitMQContainerImageTags
/// library/rabbitmq
public const string Image = "library/rabbitmq";
- /// 4.1
- public const string Tag = "4.1";
+ /// 4.2
+ public const string Tag = "4.2";
/// -management
public const string ManagementTag = $"{Tag}-management";
diff --git a/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs b/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs
index e88c2c8c54c..e40be45c763 100644
--- a/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs
+++ b/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs
@@ -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 =>
{
@@ -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 =>
{
@@ -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 =>
{
@@ -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}"
},
@@ -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}"
},
@@ -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}"
},
@@ -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}"
},
diff --git a/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs b/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs
index 4cd53c05c89..9ef6e138755 100644
--- a/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs
+++ b/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs
@@ -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"