Opinionated.tf/products/minio/minio.tf

50 lines
2.4 KiB
HCL

module "minio" {
source = "../../docker/service"
stack_name = var.stack_name
service_name = "minio"
image = "quay.io/minio/minio:latest"
command = ["minio", "server", "/data", ]
healthcheck = ["CMD", "mc", "ready", "local", ]
healthcheck_start_period = "20s"
converge_enable = true
converge_timeout = "2m"
environment_variables = merge({
MINIO_ADDRESS = "0.0.0.0:9000"
MINIO_CONSOLE_ADDRESS = "0.0.0.0:9001"
MINIO_ROOT_USER = random_pet.minio_admin_user.id
MINIO_ROOT_PASSWORD = random_password.minio_admin_password.result
MINIO_SERVER_URL = "https://${var.domain}"
MINIO_BROWSER_REDIRECT_URL = "https://${var.domain}/ui/"
#MINIO_BROWSER_REDIRECT = true
MINIO_API_ROOT_ACCESS = "on"
}, var.environment_variables)
ports = var.ports
mounts = var.mounts
remote_volumes = var.remote_volumes
networks = concat(var.networks, [module.network])
placement_constraints = var.placement_constraints
labels = {
"traefik.enable" = "true"
// API redirect
"traefik.http.routers.minio_api.rule" = "Host(`${var.domain}`) && !PathPrefix(`/ui`)"
"traefik.http.routers.minio_api.service" = "minio_api"
"traefik.http.routers.minio_api.entrypoints" = try(var.traefik.ssl, false) ? "websecure" : "web"
"traefik.http.routers.minio_api.tls.certresolver" = try(var.traefik.ssl, false) ? "default" : null
"traefik.http.services.minio_api.loadbalancer.server.port" = "9000"
// UI redirect
"traefik.http.routers.minio_ui.rule" = "Host(`${var.domain}`) && PathPrefix(`/ui`)"
"traefik.http.routers.minio_ui.service" = "minio_ui"
"traefik.http.routers.minio_ui.entrypoints" = try(var.traefik.ssl, false) ? "websecure" : "web"
"traefik.http.routers.minio_ui.tls.certresolver" = try(var.traefik.ssl, false) ? "default" : null
"traefik.http.services.minio_ui.loadbalancer.server.port" = "9001"
// Create middleware to strip the prefix
"traefik.http.middlewares.minio_ui.stripprefix.prefixes" = "/ui"
# Attach the middleware to the UI router
"traefik.http.routers.minio_ui.middlewares" = "minio_ui"
}
}