diff --git a/electron/ipc/docker.ts b/electron/ipc/docker.ts index df0d118..63de9da 100644 --- a/electron/ipc/docker.ts +++ b/electron/ipc/docker.ts @@ -57,7 +57,12 @@ export function bindDockerIpc(win: BrowserWindow) { ) { console.log("pulling", data); return await new Promise((resolve, reject) => { - docker.pull(`${data.type}:${data.version}`, {}, (err, stream) => { + let imageName = `${data.type}:${data.version}`; + if (data.type === "mssql") { + imageName = `mcr.microsoft.com/mssql/server:${data.version}`; + } + + docker.pull(imageName, {}, (err, stream) => { if (err) reject(err); if (!stream) { @@ -115,7 +120,6 @@ export function bindDockerIpc(win: BrowserWindow) { if (data.type === "mysql") { // Get the volume path const volume = getUserDataPath(`/vol/${data.id}`); - console.log("here", volume); await docker.createContainer({ name: data.id, @@ -133,7 +137,17 @@ export function bindDockerIpc(win: BrowserWindow) { Binds: [`${volume}:/var/lib/mysql`], }, }); - } else { + } else if (data.type === "mssql") { + await docker.createContainer({ + name: data.id, + Image: `mcr.microsoft.com/mssql/server:${data.version}`, + Env: [`ACCEPT_EULA=Y`, `MSSQL_SA_PASSWORD=${data.config.password}`], + ExposedPorts: { "1433/tcp": {} }, + HostConfig: { + PortBindings: { "1433/tcp": [{ HostPort: `${data.config.port}` }] }, + }, + }); + } else if (data.type === "postgres") { const volume = getUserDataPath(`vol/${data.id}`); await docker.createContainer({ diff --git a/src/instance/index.tsx b/src/instance/index.tsx index 216ac1d..3018029 100644 --- a/src/instance/index.tsx +++ b/src/instance/index.tsx @@ -30,6 +30,7 @@ import { PostgresInstance } from "./postgres-instance"; import { Toolbar, ToolbarButton, ToolbarDropdown } from "@/components/toolbar"; import { type PullImageProgress } from "electron/ipc/docker"; import { parseSafeJson } from "@/lib/json-help"; +import { SqlServerInstance } from "./mssql-instance"; function convertByteToMBString(byte: number) { return `${(byte / 1024 / 1024).toFixed(2)}mb`; @@ -211,6 +212,10 @@ function InstanceListRoute() { PostgreSQL + navigate("/instance/create/mssql")}> + + Microsoft SQL + + (() => ({ + id: "mssql-" + DatabaseManagerStore.generateShortId(), + name: "MS SSQL Local", + type: "mssql", + version: "2017-CU11-ubuntu", + config: { + port: "1433", + username: "sa", + password: "yourStrong(!)Password", + }, + })); + const navigate = useNavigate(); + + return ( +
+ + + + + +
+
+
+ + + setData((d) => { + d.name = e.target.value; + }) + } + /> +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + + setData((d) => { + d.config.password = e.target.value; + }) + } + /> +
+ +
+ + + setData((d) => { + d.config.port = e.target.value; + }) + } + /> +
+
+ +
+ +
+
+
+ ); +}