AWS CDK but for normal people. Don't worry about scaling and AWS bills, just rent a VPS and run my randomly-named services on it! I'm no Jia Tan but a man can dream.
Also this is only going to be tested with Deno. You deserve better than node.
Use with staxman (WIP).
Usage example (v0):
import { Stack } from "../mod.ts"; interface RedisStackOptions { stackName?: string; redisVersion?: string; } export class RedisStack extends Stack { constructor(props: ImmichStackOptions) { super(props.stackName ?? "immich"); const redis = new Service(this, "redis", { image: `registry.hub.docker.com/library/redis:${props.redisVersion ?? "alpine"}`, restart: "unless-stopped" }); } } const stack = new RedisStack({ redisVersion: "6.2-alpine" });
For a more in-depth example, see the example stacks in example/
.
Current status: v0 - Annoyingly, this already kinda works!
Initially, containerlib will return docker-compose.yml files. This allows quick implementation and moving from existing Portainer setups to staxman.
Post-MVP, containerlib will return an intermediary state representation (akin to Kubernetes manifests) that serverman can use to control OCI containers via docker API. This is basically integrating the docker-compose functionality directly within serverman.
Add Package
deno add jsr:@staxman/containerlib
Import symbol
import * as containerlib from "@staxman/containerlib";
Import directly with a jsr specifier
import * as containerlib from "jsr:@staxman/containerlib";
Add Package
pnpm i jsr:@staxman/containerlib
pnpm dlx jsr add @staxman/containerlib
Import symbol
import * as containerlib from "@staxman/containerlib";
Add Package
yarn add jsr:@staxman/containerlib
yarn dlx jsr add @staxman/containerlib
Import symbol
import * as containerlib from "@staxman/containerlib";
Add Package
npx jsr add @staxman/containerlib
Import symbol
import * as containerlib from "@staxman/containerlib";
Add Package
bunx jsr add @staxman/containerlib
Import symbol
import * as containerlib from "@staxman/containerlib";