Add: Windmill.dev

This commit is contained in:
DrMxrcy 2024-11-12 12:50:08 -05:00
parent ed470ee827
commit 88f969917f
4 changed files with 193 additions and 0 deletions

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{opacity:0.4;fill:#FFFFFF;}
.st2{fill:#BCD4FC;}
.st3{fill:#3B82F6;}
.st4{fill:#B3B3B3;}
.st5{fill:url(#SVGID_1_);}
.st6{fill:url(#SVGID_00000021089067129159788970000008246765442136188072_);}
.st7{fill:url(#SVGID_00000117639240116366130650000015074833605515028638_);}
.st8{opacity:0.4;fill:url(#SVGID_00000101781798616409025840000016567063639337360777_);}
.st9{opacity:0.4;fill:url(#SVGID_00000052086836598721292040000002033117744178971046_);}
.st10{opacity:0.4;fill:url(#SVGID_00000159460939004760751800000002448009281983951536_);}
.st11{opacity:0.4;fill:url(#SVGID_00000013177830667419993080000017721442101626521532_);}
.st12{opacity:0.4;fill:url(#SVGID_00000152235521444854938490000006526001119318383285_);}
.st13{opacity:0.4;fill:url(#SVGID_00000119823135212293698520000012774889010992664993_);}
</style>
<g>
<polygon class="st2" points="134.78,14.22 114.31,48.21 101.33,69.75 158.22,69.75 177.97,36.95 191.67,14.22 "/>
<polygon class="st3" points="227.55,69.75 186.61,69.75 101.33,69.75 129.78,119.02 158.16,119.02 228.61,119.02 256,119.02 "/>
<polygon class="st3" points="136.93,132.47 116.46,167.93 73.82,241.78 130.71,241.78 144.9,217.2 180.13,156.18 193.82,132.46
"/>
<polygon class="st3" points="121.7,131.95 101.23,96.49 58.59,22.63 30.15,71.91 44.34,96.49 79.57,157.5 93.26,181.22 "/>
<polygon class="st2" points="64.81,131.95 25.15,131.21 0,130.74 28.44,180.01 66.73,180.72 93.26,181.21 "/>
<polygon class="st2" points="165.38,181.74 184.58,216.46 196.75,238.47 225.19,189.2 206.66,155.69 193.83,132.46 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -716,4 +716,18 @@ export const templates: TemplateData[] = [
tags: ["api", "development", "documentation"],
load: () => import("./peppermint/index").then((m) => m.generate),
},
{
id: "windmill",
name: "Windmill",
version: "latest",
description: "A developer platform to build production-grade workflows and internal apps. Open-source alternative to Airplane, Retool, and GitHub Actions.",
logo: "windmill.svg",
links: {
github: "https://github.com/windmill-labs/windmill",
website: "https://www.windmill.dev/",
docs: "https://docs.windmill.dev/",
},
tags: ["workflow", "automation", "development"],
load: () => import("./windmill/index").then((m) => m.generate),
},
];

View File

@ -0,0 +1,107 @@
version: "3.8"
services:
db:
image: postgres:16
shm_size: 1g
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
networks:
- dokploy-network
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: windmill
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
windmill_server:
image: ghcr.io/windmill-labs/windmill:main
networks:
- dokploy-network
restart: unless-stopped
environment:
- DATABASE_URL=${DATABASE_URL}
- MODE=server
- BASE_URL=http://${WINDMILL_HOST}
depends_on:
db:
condition: service_healthy
volumes:
- worker_logs:/tmp/windmill/logs
windmill_worker:
image: ghcr.io/windmill-labs/windmill:main
deploy:
replicas: 3
resources:
limits:
cpus: "1"
memory: 2048M
restart: unless-stopped
networks:
- dokploy-network
environment:
- DATABASE_URL=${DATABASE_URL}
- MODE=worker
- WORKER_GROUP=default
depends_on:
db:
condition: service_healthy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- worker_dependency_cache:/tmp/windmill/cache
- worker_logs:/tmp/windmill/logs
windmill_worker_native:
image: ghcr.io/windmill-labs/windmill:main
deploy:
replicas: 1
resources:
limits:
cpus: "0.1"
memory: 128M
restart: unless-stopped
networks:
- dokploy-network
environment:
- DATABASE_URL=${DATABASE_URL}
- MODE=worker
- WORKER_GROUP=native
- NUM_WORKERS=8
- SLEEP_QUEUE=200
depends_on:
db:
condition: service_healthy
volumes:
- worker_logs:/tmp/windmill/logs
lsp:
image: ghcr.io/windmill-labs/windmill-lsp:latest
restart: unless-stopped
networks:
- dokploy-network
volumes:
- lsp_cache:/root/.cache
caddy:
image: ghcr.io/windmill-labs/caddy-l4:latest
restart: unless-stopped
networks:
- dokploy-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
environment:
- BASE_URL=":80"
depends_on:
- windmill_server
- lsp
volumes:
db_data:
worker_dependency_cache:
worker_logs:
lsp_cache:

View File

@ -0,0 +1,43 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const postgresPassword = generatePassword();
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 80,
serviceName: "caddy",
},
];
const envs = [
`WINDMILL_HOST=${mainDomain}`,
`POSTGRES_PASSWORD=${postgresPassword}`,
`DATABASE_URL=postgres://postgres:${postgresPassword}@db/windmill?sslmode=disable`,
];
const mounts: Template["mounts"] = [
{
mountPath: "./Caddyfile",
content: `{$BASE_URL} {
bind {$ADDRESS}
reverse_proxy /ws/* http://lsp:3001
reverse_proxy /* http://windmill_server:8000
}`
},
];
return {
domains,
envs,
mounts,
};
}