47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
# containerlib
|
|
|
|
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.
|
|
|
|
## Usage
|
|
|
|
Use with [staxman](https://git.fromouter.space/staxman) (WIP).
|
|
|
|
Usage example (v0):
|
|
|
|
```ts
|
|
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 = this.addService("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/`.
|
|
|
|
## World domination plan
|
|
|
|
Current status: v0 - Annoyingly, this already kinda works!
|
|
|
|
### v1: docker-compose
|
|
|
|
Initially, containerlib will return docker-compose.yml files. This allows quick implementation and moving from existing Portainer setups to staxman.
|
|
|
|
### v2: assume direct control
|
|
|
|
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.
|