Skip to content

Commit 7e87f99

Browse files
committed
Fix Redis container to accept input command
See issue #1150
1 parent 96013d8 commit 7e87f99

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

packages/modules/redis/src/redis-container.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,47 @@ describe("RedisContainer", { timeout: 240_000 }, () => {
119119
client.destroy();
120120
// }
121121
});
122+
123+
it("should start redis with custom command", async () => {
124+
const container = new RedisContainer(IMAGE).withCommand(["redis-server", "--loglevel", "verbose"]);
125+
const startedContainer = await container.start();
126+
127+
// @ts-expect-error - accessing private property for testing
128+
expect(container.createOpts.Cmd).toEqual(["redis-server", "--loglevel", "verbose"]);
129+
130+
const client = createClient({ url: startedContainer.getConnectionUrl() });
131+
await client.connect();
132+
133+
await client.set("key", "val");
134+
expect(await client.get("key")).toBe("val");
135+
136+
client.destroy();
137+
});
138+
139+
it("should start redis with custom command and keeping default args", async () => {
140+
const sourcePath = fs.mkdtempSync("redis-");
141+
142+
const container = new RedisContainer(IMAGE)
143+
.withCommand(["redis-server", "--loglevel", "verbose"])
144+
.withPersistence(sourcePath);
145+
const startedContainer = await container.start();
146+
147+
// @ts-expect-error - accessing private property for testing
148+
expect(container.createOpts.Cmd).toEqual([
149+
"redis-server",
150+
"--loglevel",
151+
"verbose",
152+
"--save 1 1 ",
153+
"--appendonly yes",
154+
]);
155+
156+
const client = createClient({ url: startedContainer.getConnectionUrl() });
157+
await client.connect();
158+
159+
await client.set("key", "val");
160+
expect(await client.get("key")).toBe("val");
161+
162+
client.destroy();
163+
fs.rmSync(sourcePath, { force: true, recursive: true });
164+
});
122165
});

packages/modules/redis/src/redis-container.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ export class RedisContainer extends GenericContainer {
4848
REDIS_ARGS: redisArgs.join(" "),
4949
}).withEntrypoint(["/entrypoint.sh"]);
5050
} else {
51-
this.withCommand(["redis-server", ...redisArgs]);
51+
const existingCmd = this.createOpts.Cmd || [];
52+
const baseCmd = existingCmd.length ? existingCmd : ["redis-server"];
53+
this.withCommand([...baseCmd, ...redisArgs]);
5254
}
5355
if (this.persistenceVolume) {
5456
this.withBindMounts([{ mode: "rw", source: this.persistenceVolume, target: "/data" }]);

0 commit comments

Comments
 (0)