MCPcopy
hub / github.com/redis/node-redis / spawnRedisServerDocker

Function spawnRedisServerDocker

packages/test-utils/lib/dockers.ts:99–150  ·  view source on GitHub ↗
(
options: RedisServerDockerOptions, serverArguments: Array<string>)

Source from the content-addressed store, hash-verified

97const DEFAULT_TLS_PATH = "/redis/work/tls";
98
99export async function spawnRedisServerDocker(
100options: RedisServerDockerOptions, serverArguments: Array<string>): Promise<RedisServerDocker> {
101 let port;
102 if (options.mode == "sentinel") {
103 port = options.port;
104 } else {
105 port = (await portIterator.next()).value;
106 }
107
108 const portStr = port.toString();
109
110 const dockerArgs = [
111 'run',
112 '--init',
113 '-e', `PORT=${portStr}`
114 ];
115
116 if (options.mode == "sentinel") {
117 options.mounts.forEach(mount => {
118 dockerArgs.push('-v', mount);
119 });
120 }
121
122 dockerArgs.push(
123 '-d',
124 '--network', 'host',
125 `${options.image}:${options.version}`
126 );
127
128 if (serverArguments.length > 0) {
129 for (let i = 0; i < serverArguments.length; i++) {
130 dockerArgs.push(serverArguments[i])
131 }
132 }
133
134 console.log(`[Docker] Spawning Redis container - Image: ${options.image}:${options.version}, Port: ${port}, Mode: ${options.mode}`);
135
136 const { stdout, stderr } = await execAsync('docker', dockerArgs);
137
138 if (!stdout) {
139 throw new Error(`docker run error - ${stderr}`);
140 }
141
142 while (await isPortAvailable(port)) {
143 await setTimeout(50);
144 }
145
146 return {
147 port,
148 dockerId: stdout.trim()
149 };
150}
151const RUNNING_SERVERS = new Map<Array<string>, ReturnType<typeof spawnRedisServerDocker>>();
152
153export interface ProxiedRedisServerDocker {

Callers 5

spawnRedisServerMethod · 0.90
spawnRedisServerFunction · 0.70
spawnRedisSentinelFunction · 0.70
spawnSentinelNodeFunction · 0.70

Calls 4

logMethod · 0.80
isPortAvailableFunction · 0.70
toStringMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected