From df12fee39cce83ce40b12bd8c8c967a39acf8f71 Mon Sep 17 00:00:00 2001 From: wancat Date: Sat, 15 Jul 2023 15:22:19 +0800 Subject: [PATCH] Reuse container by name --- server/docker.js | 14 +++++++++----- server/websocket.js | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/server/docker.js b/server/docker.js index e2eaf44..05704fd 100644 --- a/server/docker.js +++ b/server/docker.js @@ -13,15 +13,19 @@ const containerOptions = { StdinOnce: false, } -export async function createContainer() { +export async function getOrCreateContainer(name) { try { - const container = await engine.createContainer(containerOptions) + const container = engine.getContainer(name) + await container.inspect() + return container + } catch (error) { + const container = await engine.createContainer({ + ...containerOptions, + name, + }) await container.start() console.log(container.id) return container - } catch (error) { - console.error(error) - throw error } } diff --git a/server/websocket.js b/server/websocket.js index 6f0140b..9e321c9 100644 --- a/server/websocket.js +++ b/server/websocket.js @@ -1,7 +1,7 @@ import express from 'express' import http from 'http' import { Server } from 'socket.io' -import { createContainer, attachContainer } from './docker.js' +import { getOrCreateContainer, attachContainer } from './docker.js' const app = express() const server = http.createServer(app) @@ -9,7 +9,7 @@ const io = new Server(server) io.on('connection', async (socket) => { console.log('Connected to the client.') - const container = await createContainer() + const container = await getOrCreateContainer('odyssey-test') const stream = await attachContainer(container) stream.on('data', (chunk) => {