feat: add minio

This commit is contained in:
Mauricio Siu 2024-06-30 22:12:06 -06:00
parent 3cd3db6828
commit 86fc59d850
4 changed files with 69 additions and 0 deletions

BIN
public/templates/minio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,31 @@
version: '3.8'
services:
minio:
image: minio/minio
ports:
- ${MINIO_API_PORT}
- ${MINIO_DASHBOARD_PORT}
volumes:
- minio-data:/data
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin123
command: server /data --console-address ":9001"
networks:
- dokploy-network
labels:
- traefik.enable=true
- traefik.http.routers.${HASH}.service=${HASH}
- traefik.http.routers.${HASH}.rule=Host(`${MINIO_DASHBOARD_HOST}`)
- traefik.http.services.${HASH}.loadbalancer.server.port=${MINIO_DASHBOARD_PORT}
# API router and service
- traefik.http.routers.${HASH}-api.service=${HASH}-api
- traefik.http.routers.${HASH}-api.rule=Host(`${MINIO_API_HOST}`)
- traefik.http.services.${HASH}-api.loadbalancer.server.port=${MINIO_API_PORT}
volumes:
minio-data:
networks:
dokploy-network:
external: true

23
templates/minio/index.ts Normal file
View File

@ -0,0 +1,23 @@
import {
generateHash,
generateRandomDomain,
type Template,
type Schema,
} from "../utils";
export function generate(schema: Schema): Template {
const mainServiceHash = generateHash(schema.projectName);
const randomDomain = generateRandomDomain(schema);
const apiDomain = generateRandomDomain(schema);
const envs = [
`MINIO_DASHBOARD_HOST=${randomDomain}`,
"MINIO_DASHBOARD_PORT=9001",
`MINIO_API_HOST=${apiDomain}`,
"MINIO_API_PORT=9000",
`HASH=${mainServiceHash}`,
];
return {
envs,
};
}

View File

@ -274,4 +274,19 @@ export const templates: TemplateData[] = [
tags: ["chat"],
load: () => import("./rocketchat/index").then((m) => m.generate),
},
{
id: "minio",
name: "Minio",
description:
"Minio is an open source object storage server compatible with Amazon S3 cloud storage service.",
logo: "minio.png",
version: "latest",
links: {
github: "https://github.com/minio/minio",
website: "https://minio.io/",
docs: "https://docs.minio.io/",
},
tags: ["storage"],
load: () => import("./minio/index").then((m) => m.generate),
},
];