diff --git a/examples/local-image/Dockerfile b/examples/local-image/Dockerfile new file mode 100644 index 0000000..5c5e576 --- /dev/null +++ b/examples/local-image/Dockerfile @@ -0,0 +1,3 @@ +FROM alpine:latest +WORKDIR /golem/work +RUN echo "hello from my local image 👋" > /golem/work/hello.txt \ No newline at end of file diff --git a/examples/local-image/alpine.gvmi b/examples/local-image/alpine.gvmi new file mode 100644 index 0000000..cccb32c Binary files /dev/null and b/examples/local-image/alpine.gvmi differ diff --git a/examples/local-image/serveLocalGvmi.ts b/examples/local-image/serveLocalGvmi.ts new file mode 100644 index 0000000..a3d5f0c --- /dev/null +++ b/examples/local-image/serveLocalGvmi.ts @@ -0,0 +1,34 @@ +import { TaskExecutor } from "@golem-sdk/task-executor"; +import { pinoPrettyLogger } from "@golem-sdk/pino-logger"; +import { fileURLToPath } from "url"; + +const DIR_NAME = fileURLToPath(new URL(".", import.meta.url)); + +(async function main() { + const executor = await TaskExecutor.create({ + logger: pinoPrettyLogger({ level: "info" }), + demand: { + workload: { + // if the image url starts with "file://" it will be treated as a local file + // and the sdk will automatically serve it to the provider + imageUrl: `file://${DIR_NAME}/alpine.gvmi`, + }, + }, + market: { + rentHours: 0.5, + pricing: { + model: "linear", + maxStartPrice: 0.5, + maxCpuPerHourPrice: 1.0, + maxEnvPerHourPrice: 0.5, + }, + }, + }); + try { + await executor.run(async (exe) => console.log((await exe.run("cat hello.txt")).stdout)); + } catch (error) { + console.error("Computation failed:", error); + } finally { + await executor.shutdown(); + } +})(); diff --git a/tests/examples/examples.json b/tests/examples/examples.json index df7aed5..3cbb7f4 100644 --- a/tests/examples/examples.json +++ b/tests/examples/examples.json @@ -61,5 +61,6 @@ { "cmd": "node", "path": "examples/docs-examples/examples/executing-tasks/observing-events.mjs" }, { "cmd": "node", "path": "examples/docs-examples/examples/outbound/npm-install.mjs" }, { "cmd": "node", "path": "examples/docs-examples/examples/outbound/outbound-basic.mjs" }, - { "cmd": "node", "path": "examples/docs-examples/examples/outbound/whitelist-checker.mjs" } + { "cmd": "node", "path": "examples/docs-examples/examples/outbound/whitelist-checker.mjs" }, + { "cmd": "tsx", "path": "examples/local-image/serveLocalGvmi.ts" } ]