diff --git a/scratchpad/playground.ts b/scratchpad/playground.ts index e668a2e3..b0eb973c 100644 --- a/scratchpad/playground.ts +++ b/scratchpad/playground.ts @@ -1,23 +1,23 @@ -import * as NodeRuntime from "@effect/platform-node/NodeRuntime"; -import * as NodeSocket from "@effect/platform-node/NodeSocket"; -import * as Console from "effect/Console"; -import * as Effect from "effect/Effect"; -import * as Function from "effect/Function"; -import * as Layer from "effect/Layer"; - -import * as Connection from "the-moby-effect/Connection"; -import * as DockerEngine from "the-moby-effect/engines/Docker"; +import { NodeContext, NodeRuntime } from "@effect/platform-node"; +import { Console, Effect, Function, Layer } from "effect"; +import { Engines, MobyConnection } from "the-moby-effect"; const layer = Function.pipe( - Connection.connectionOptionsFromPlatformSystemSocketDefault(), - Effect.map(DockerEngine.layerNodeJS), - Layer.unwrapEffect + MobyConnection.connectionOptionsFromPlatformSystemSocketDefault, + Effect.map((connectionOptionsToHost) => + Engines.DindEngine.layerNodeJS({ + connectionOptionsToHost, + exposeDindContainerBy: "socket" as const, + dindBaseImage: "docker.io/library/docker:25-dind-rootless" as const, + }) + ), + Layer.unwrapEffect, + Layer.provideMerge(NodeContext.layer) ); Effect.gen(function* () { - yield* Console.log(void 0); + const data = yield* Engines.DockerEngine.version(); + yield* Console.log(data); }) - .pipe(Effect.scoped) .pipe(Effect.provide(layer)) - .pipe(Effect.provide(NodeSocket.layerWebSocketConstructor)) .pipe(NodeRuntime.runMain); diff --git a/src/engines/Dind.ts b/src/engines/Dind.ts index affb3e2e..22dc14f0 100644 --- a/src/engines/Dind.ts +++ b/src/engines/Dind.ts @@ -165,7 +165,15 @@ const makeDindBinds = Effect.succeed(""), - onTrue: () => Effect.flatMap(FileSystem.FileSystem, (fs) => fs.makeTempDirectoryScoped()), + onTrue: () => + Effect.flatMap(FileSystem.FileSystem, (fs) => + Effect.gen(function* () { + const tempDirectory = yield* fs.makeTempDirectoryScoped(); + yield* fs.chown(tempDirectory, 1000, 1000); + yield* fs.chmod(tempDirectory, 0o777); + return tempDirectory; + }) + ), }); const boundDockerSocket = yield* Effect.if(exposeDindBy === "socket", {