diff --git a/packages/modules/arangodb/Dockerfile b/packages/modules/arangodb/Dockerfile index 1bdecdd6f..42a78e798 100644 --- a/packages/modules/arangodb/Dockerfile +++ b/packages/modules/arangodb/Dockerfile @@ -1 +1 @@ -FROM arangodb:3.10.0 +FROM arangodb:3.12.4.3 diff --git a/packages/modules/cassandra/Dockerfile b/packages/modules/cassandra/Dockerfile index b25c4afa0..ad1ef8f64 100644 --- a/packages/modules/cassandra/Dockerfile +++ b/packages/modules/cassandra/Dockerfile @@ -1 +1 @@ -FROM cassandra:5.0.2 +FROM cassandra:5.0.4 diff --git a/packages/modules/cassandra/src/cassandra-container.test.ts b/packages/modules/cassandra/src/cassandra-container.test.ts index c8a5bf18a..ababeb160 100644 --- a/packages/modules/cassandra/src/cassandra-container.test.ts +++ b/packages/modules/cassandra/src/cassandra-container.test.ts @@ -1,4 +1,5 @@ import { Client } from "cassandra-driver"; +import { ImageName } from "testcontainers"; import { getImage } from "../../../testcontainers/src/utils/test-helper"; import { CassandraContainer } from "./cassandra-container"; @@ -18,7 +19,7 @@ describe("Cassandra", { timeout: 240_000 }, () => { await client.connect(); const result = await client.execute("SELECT release_version FROM system.local"); - expect(result.rows[0].release_version).toBe("5.0.2"); + expect(result.rows[0].release_version).toBe(ImageName.fromString(IMAGE).tag); await client.shutdown(); await container.stop(); @@ -124,7 +125,7 @@ describe("Cassandra", { timeout: 240_000 }, () => { await client.connect(); const result = await client.execute("SELECT release_version FROM system.local"); - expect(result.rows[0].release_version).toBe("5.0.2"); + expect(result.rows[0].release_version).toBe(ImageName.fromString(IMAGE).tag); await client.shutdown(); await container.stop(); diff --git a/packages/modules/clickhouse/Dockerfile b/packages/modules/clickhouse/Dockerfile index 86e1b49cb..d9e325b65 100644 --- a/packages/modules/clickhouse/Dockerfile +++ b/packages/modules/clickhouse/Dockerfile @@ -1 +1 @@ -FROM clickhouse/clickhouse-server:25.3-alpine +FROM clickhouse/clickhouse-server:25.5-alpine diff --git a/packages/modules/cockroachdb/Dockerfile b/packages/modules/cockroachdb/Dockerfile index 2fa829971..663b1922e 100644 --- a/packages/modules/cockroachdb/Dockerfile +++ b/packages/modules/cockroachdb/Dockerfile @@ -1 +1 @@ -FROM cockroachdb/cockroach:v24.3.5 +FROM cockroachdb/cockroach:v25.2.0 diff --git a/packages/modules/couchbase/Dockerfile b/packages/modules/couchbase/Dockerfile index 8a236788c..5a77dd6d1 100644 --- a/packages/modules/couchbase/Dockerfile +++ b/packages/modules/couchbase/Dockerfile @@ -1 +1 @@ -FROM couchbase/server:6.5.1 +FROM couchbase/server:7.6.6 diff --git a/packages/modules/elasticsearch/Dockerfile b/packages/modules/elasticsearch/Dockerfile index 0f98a170f..459f3e838 100644 --- a/packages/modules/elasticsearch/Dockerfile +++ b/packages/modules/elasticsearch/Dockerfile @@ -1 +1 @@ -FROM elasticsearch:7.17.7 +FROM elasticsearch:9.0.1 diff --git a/packages/modules/elasticsearch/src/elasticsearch-container.test.ts b/packages/modules/elasticsearch/src/elasticsearch-container.test.ts index e53b47636..15ff0399d 100644 --- a/packages/modules/elasticsearch/src/elasticsearch-container.test.ts +++ b/packages/modules/elasticsearch/src/elasticsearch-container.test.ts @@ -3,12 +3,16 @@ import { getImage } from "../../../testcontainers/src/utils/test-helper"; import { ElasticsearchContainer } from "./elasticsearch-container"; const IMAGE = getImage(__dirname); +const images = ["elasticsearch:7.17.28", "elasticsearch:8.18.1", IMAGE]; describe("ElasticsearchContainer", { timeout: 180_000 }, () => { // createIndex { - it("should create an index", async () => { - const container = await new ElasticsearchContainer(IMAGE).start(); - const client = new Client({ node: container.getHttpUrl() }); + it.each(images)("should create an index with %s", async (image) => { + const container = await new ElasticsearchContainer(image).start(); + const client = new Client({ + node: container.getHttpUrl(), + auth: { username: container.getUsername(), password: container.getPassword() }, + }); await client.indices.create({ index: "people" }); @@ -20,7 +24,10 @@ describe("ElasticsearchContainer", { timeout: 180_000 }, () => { // indexDocument { it("should index a document", async () => { const container = await new ElasticsearchContainer(IMAGE).start(); - const client = new Client({ node: container.getHttpUrl() }); + const client = new Client({ + node: container.getHttpUrl(), + auth: { username: container.getUsername(), password: container.getPassword() }, + }); const document = { id: "1", @@ -41,7 +48,24 @@ describe("ElasticsearchContainer", { timeout: 180_000 }, () => { const container = await new ElasticsearchContainer(IMAGE).start(); await container.restart(); - const client = new Client({ node: container.getHttpUrl() }); + const client = new Client({ + node: container.getHttpUrl(), + auth: { username: container.getUsername(), password: container.getPassword() }, + }); + + await client.indices.create({ index: "people" }); + + expect(await client.indices.exists({ index: "people" })).toBe(true); + await container.stop(); + }); // } + + it("should set custom password", async () => { + const container = await new ElasticsearchContainer(IMAGE).withPassword("testPassword").start(); + + const client = new Client({ + node: container.getHttpUrl(), + auth: { username: container.getUsername(), password: container.getPassword() }, + }); await client.indices.create({ index: "people" }); diff --git a/packages/modules/elasticsearch/src/elasticsearch-container.ts b/packages/modules/elasticsearch/src/elasticsearch-container.ts index ca5ef672f..fe3cd7e24 100644 --- a/packages/modules/elasticsearch/src/elasticsearch-container.ts +++ b/packages/modules/elasticsearch/src/elasticsearch-container.ts @@ -1,28 +1,53 @@ -import { AbstractStartedContainer, GenericContainer, StartedTestContainer } from "testcontainers"; +import { AbstractStartedContainer, GenericContainer, StartedTestContainer, Wait } from "testcontainers"; const ELASTIC_SEARCH_HTTP_PORT = 9200; export class ElasticsearchContainer extends GenericContainer { + private password = "changeme"; + private readonly username = "elastic"; + private readonly defaultWaitStrategy = Wait.forHttp("/", ELASTIC_SEARCH_HTTP_PORT).withBasicCredentials( + this.username, + this.password + ); + constructor(image: string) { super(image); this.withExposedPorts(ELASTIC_SEARCH_HTTP_PORT) - .withEnvironment({ "discovery.type": "single-node" }) + .withEnvironment({ + "discovery.type": "single-node", + "xpack.security.http.ssl.enabled": "false", + }) .withCopyContentToContainer([ { content: "-Xmx2G\n", target: "/usr/share/elasticsearch/config/jvm.options.d/elasticsearch-default-memory-vm.options", }, ]) + .withWaitStrategy(this.defaultWaitStrategy) .withStartupTimeout(120_000); } + public withPassword(password: string): this { + this.password = password; + this.defaultWaitStrategy.withBasicCredentials(this.username, this.password); + return this; + } + public override async start(): Promise { - return new StartedElasticsearchContainer(await super.start()); + this.withEnvironment({ + ELASTIC_PASSWORD: this.password, + }); + + return new StartedElasticsearchContainer(await super.start(), this.username, this.password); } } export class StartedElasticsearchContainer extends AbstractStartedContainer { - constructor(override readonly startedTestContainer: StartedTestContainer) { + constructor( + override readonly startedTestContainer: StartedTestContainer, + private readonly username: string, + private readonly password: string + ) { super(startedTestContainer); } @@ -33,4 +58,12 @@ export class StartedElasticsearchContainer extends AbstractStartedContainer { public getHttpUrl(): string { return `http://${this.getHost()}:${this.getPort()}`; } + + public getUsername(): string { + return this.username; + } + + public getPassword(): string { + return this.password; + } } diff --git a/packages/modules/gcloud/Dockerfile b/packages/modules/gcloud/Dockerfile index b6bea9b0e..f2cd173f7 100644 --- a/packages/modules/gcloud/Dockerfile +++ b/packages/modules/gcloud/Dockerfile @@ -1,3 +1,3 @@ -FROM gcr.io/google.com/cloudsdktool/cloud-sdk:517.0.0-emulators +FROM gcr.io/google.com/cloudsdktool/cloud-sdk:523.0.1-emulators FROM fsouza/fake-gcs-server:1.52.2 FROM ghcr.io/goccy/bigquery-emulator:0.6.6 \ No newline at end of file diff --git a/packages/modules/hivemq/Dockerfile b/packages/modules/hivemq/Dockerfile index 22df0a970..0b355b345 100644 --- a/packages/modules/hivemq/Dockerfile +++ b/packages/modules/hivemq/Dockerfile @@ -1 +1 @@ -FROM hivemq/hivemq-ce:2023.5 +FROM hivemq/hivemq-ce:2025.3 diff --git a/packages/modules/k3s/Dockerfile b/packages/modules/k3s/Dockerfile index 8607a0b97..dc9cf371f 100644 --- a/packages/modules/k3s/Dockerfile +++ b/packages/modules/k3s/Dockerfile @@ -1 +1 @@ -FROM rancher/k3s:v1.31.2-k3s1 +FROM rancher/k3s:v1.33.1-k3s1 diff --git a/packages/modules/kafka/Dockerfile b/packages/modules/kafka/Dockerfile index 595d60366..8afe540be 100644 --- a/packages/modules/kafka/Dockerfile +++ b/packages/modules/kafka/Dockerfile @@ -1 +1 @@ -FROM confluentinc/cp-kafka:7.2.2 +FROM confluentinc/cp-kafka:7.9.1 diff --git a/packages/modules/localstack/Dockerfile b/packages/modules/localstack/Dockerfile index 0b46b528c..06c49e5ce 100644 --- a/packages/modules/localstack/Dockerfile +++ b/packages/modules/localstack/Dockerfile @@ -1 +1 @@ -FROM localstack/localstack:2.2.0 +FROM localstack/localstack:4.4.0 diff --git a/packages/modules/localstack/src/localstack-container.test.ts b/packages/modules/localstack/src/localstack-container.test.ts index 69d9e5837..797a69bfa 100644 --- a/packages/modules/localstack/src/localstack-container.test.ts +++ b/packages/modules/localstack/src/localstack-container.test.ts @@ -49,6 +49,7 @@ describe("LocalStackContainer", { timeout: 180_000 }, () => { const container = await new LocalstackContainer(IMAGE) .withNetwork(network) .withNetworkAliases("notthis", "localstack") // the last alias is used for HOSTNAME_EXTERNAL + .withEnvironment({ SQS_ENDPOINT_STRATEGY: "path" }) .start(); const awsCliInDockerNetwork = await new GenericContainer("amazon/aws-cli:2.7.27") diff --git a/packages/modules/mariadb/Dockerfile b/packages/modules/mariadb/Dockerfile index c7b504ef2..be3ca3431 100644 --- a/packages/modules/mariadb/Dockerfile +++ b/packages/modules/mariadb/Dockerfile @@ -1 +1 @@ -FROM mariadb:11.5.2 +FROM mariadb:11.7.2 diff --git a/packages/modules/mongodb/Dockerfile b/packages/modules/mongodb/Dockerfile index 1670b8066..9f3f8c478 100644 --- a/packages/modules/mongodb/Dockerfile +++ b/packages/modules/mongodb/Dockerfile @@ -1 +1 @@ -FROM mongo:4.0.1 +FROM mongo:8.0.9 diff --git a/packages/modules/mysql/Dockerfile b/packages/modules/mysql/Dockerfile index cf7d17f9f..ac9a3e7b3 100644 --- a/packages/modules/mysql/Dockerfile +++ b/packages/modules/mysql/Dockerfile @@ -1 +1 @@ -FROM mysql:8.0.31 +FROM mysql:9.3.0 diff --git a/packages/modules/nats/Dockerfile b/packages/modules/nats/Dockerfile index a9b07b60a..198411198 100644 --- a/packages/modules/nats/Dockerfile +++ b/packages/modules/nats/Dockerfile @@ -1 +1 @@ -FROM nats:2.8.4-alpine +FROM nats:2.11.4-alpine diff --git a/packages/modules/neo4j/Dockerfile b/packages/modules/neo4j/Dockerfile index 237faf0b9..7f2ed4b78 100644 --- a/packages/modules/neo4j/Dockerfile +++ b/packages/modules/neo4j/Dockerfile @@ -1 +1 @@ -FROM neo4j:4.4.12 +FROM neo4j:5.26.7 diff --git a/packages/modules/ollama/Dockerfile b/packages/modules/ollama/Dockerfile index a5e8dd75d..1aaa675ae 100644 --- a/packages/modules/ollama/Dockerfile +++ b/packages/modules/ollama/Dockerfile @@ -1 +1 @@ -FROM ollama/ollama:0.1.44 +FROM ollama/ollama:0.7.1 diff --git a/packages/modules/ollama/src/ollama-container.test.ts b/packages/modules/ollama/src/ollama-container.test.ts index 67670b963..c58d7cda6 100644 --- a/packages/modules/ollama/src/ollama-container.test.ts +++ b/packages/modules/ollama/src/ollama-container.test.ts @@ -1,3 +1,4 @@ +import { ImageName } from "testcontainers"; import { getImage } from "../../../testcontainers/src/utils/test-helper"; import { OllamaContainer } from "./ollama-container"; @@ -11,7 +12,7 @@ describe("OllamaContainer", { timeout: 180_000 }, () => { const response = await fetch(`${container.getEndpoint()}/api/version`); expect(response.status).toEqual(200); const body = (await response.json()) as { version: string }; - expect(body.version).toEqual("0.1.44"); + expect(body.version).toEqual(ImageName.fromString(IMAGE).tag); await container.stop(); }); diff --git a/packages/modules/postgresql/Dockerfile b/packages/modules/postgresql/Dockerfile index ad09aabce..091158686 100644 --- a/packages/modules/postgresql/Dockerfile +++ b/packages/modules/postgresql/Dockerfile @@ -1 +1 @@ -FROM postgres:13.3-alpine +FROM postgres:17.5-alpine diff --git a/packages/modules/qdrant/Dockerfile b/packages/modules/qdrant/Dockerfile index f454bfec0..feb215522 100644 --- a/packages/modules/qdrant/Dockerfile +++ b/packages/modules/qdrant/Dockerfile @@ -1 +1 @@ -FROM qdrant/qdrant:v1.13.4 +FROM qdrant/qdrant:v1.14.1 diff --git a/packages/modules/rabbitmq/Dockerfile b/packages/modules/rabbitmq/Dockerfile index 6ddc90357..827274814 100644 --- a/packages/modules/rabbitmq/Dockerfile +++ b/packages/modules/rabbitmq/Dockerfile @@ -1 +1 @@ -FROM rabbitmq:3.12.11-management-alpine +FROM rabbitmq:4.1.0-management-alpine diff --git a/packages/modules/redis/Dockerfile b/packages/modules/redis/Dockerfile index 1c61a6e31..956a2b973 100644 --- a/packages/modules/redis/Dockerfile +++ b/packages/modules/redis/Dockerfile @@ -1 +1 @@ -FROM redis:7.2 +FROM redis:8.0 diff --git a/packages/modules/redpanda/Dockerfile b/packages/modules/redpanda/Dockerfile index ce089db54..507088259 100644 --- a/packages/modules/redpanda/Dockerfile +++ b/packages/modules/redpanda/Dockerfile @@ -1 +1 @@ -FROM docker.redpanda.com/redpandadata/redpanda:v23.3.10 +FROM docker.redpanda.com/redpandadata/redpanda:v25.1.4 diff --git a/packages/modules/scylladb/Dockerfile b/packages/modules/scylladb/Dockerfile index 3244e3834..50e248959 100644 --- a/packages/modules/scylladb/Dockerfile +++ b/packages/modules/scylladb/Dockerfile @@ -1 +1 @@ -FROM scylladb/scylla:6.2.0 +FROM scylladb/scylla:6.2.3 diff --git a/packages/modules/selenium/Dockerfile b/packages/modules/selenium/Dockerfile index 712c57b46..08dfbd916 100644 --- a/packages/modules/selenium/Dockerfile +++ b/packages/modules/selenium/Dockerfile @@ -1 +1 @@ -FROM selenium/standalone-chrome:112.0 +FROM selenium/standalone-chrome:136.0 diff --git a/packages/modules/toxiproxy/Dockerfile b/packages/modules/toxiproxy/Dockerfile index 90cbc632e..e1a712687 100644 --- a/packages/modules/toxiproxy/Dockerfile +++ b/packages/modules/toxiproxy/Dockerfile @@ -1 +1 @@ -FROM ghcr.io/shopify/toxiproxy:2.11.0 +FROM ghcr.io/shopify/toxiproxy:2.12.0 diff --git a/packages/modules/valkey/Dockerfile b/packages/modules/valkey/Dockerfile index c687473f8..241e088b7 100644 --- a/packages/modules/valkey/Dockerfile +++ b/packages/modules/valkey/Dockerfile @@ -1 +1 @@ -FROM valkey/valkey:8.0 +FROM valkey/valkey:8.1 diff --git a/packages/modules/weaviate/Dockerfile b/packages/modules/weaviate/Dockerfile index 1f4d0ad7a..771e8e9d4 100644 --- a/packages/modules/weaviate/Dockerfile +++ b/packages/modules/weaviate/Dockerfile @@ -1 +1 @@ -FROM semitechnologies/weaviate:1.24.5 +FROM semitechnologies/weaviate:1.30.6