mirror of https://github.com/dotnet/tye.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
565 lines
19 KiB
565 lines
19 KiB
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "http://microsoft.com/dotnet/tye.schema.json",
|
|
"title": "Tye Configuration",
|
|
"description": "Configuration file schema for Tye.",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The application name.",
|
|
"type": "string"
|
|
},
|
|
"registry": {
|
|
"description": "Dockerhub username or hostname of remote registry. Used for tagging images.",
|
|
"type": "string"
|
|
},
|
|
"containerEngine": {
|
|
"description": "Container engine.",
|
|
"type": "string",
|
|
"enum": ["docker", "podman"]
|
|
},
|
|
"namespace": {
|
|
"description": "The Kubernetes namespace to use.",
|
|
"type": "string"
|
|
},
|
|
"network": {
|
|
"description": "The Docker network to use.",
|
|
"type": "string"
|
|
},
|
|
"dashboardPort": {
|
|
"description": "Configure the dashboard port used for `tye run`. Can be overridden using the `--port` CLI argument, and falls back to port 8000 if free, or a random port if 8000 is in use.",
|
|
"type": "integer"
|
|
},
|
|
"ingress": {
|
|
"description": "The application's ingresses.",
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"$ref": "#/definitions/ingress"
|
|
}
|
|
},
|
|
"extensions": {
|
|
"description": "Extensions to be added to tye.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/extension"
|
|
}
|
|
},
|
|
"solution": {
|
|
"description": "Indicates the solution file (.sln) or filter (.slnf) to use when building project-based services in watch mode. If omitted, those services will be built individually. Specifying the solution [filter] can help reduce repeated builds of shared libraries when in watch mode.",
|
|
"type": "string"
|
|
},
|
|
"services": {
|
|
"description": "The application's services.",
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/definitions/executable"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/external"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/azureFunction"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/image"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/dockerFile"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/project"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/repository"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/include"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"services"
|
|
],
|
|
"definitions": {
|
|
"binding": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The binding name.",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"description": "The binding port.",
|
|
"type": "integer"
|
|
},
|
|
"containerPort": {
|
|
"description": "The port used when running inside a container.",
|
|
"type": "integer"
|
|
},
|
|
"host": {
|
|
"description": "The hostname for the binding.",
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"description": "The protocol used by the binding",
|
|
"type": "string"
|
|
},
|
|
"autoAssignPort": {
|
|
"description": "Whether to auto-assign a port value.",
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"connectionString": {
|
|
"description": "The connection string.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"env-var": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Environment variable name.",
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"description": "Environment variable value.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"value"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"build-property": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Build property name.",
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"description": "Build property name.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"value"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"volume": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "A named volume.",
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"description": "The local path.",
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"description": "The destination path within the container.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"target"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"azureFunction": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"azureFunction": {
|
|
"description": "The directory path to the azure function.",
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"description": "Environment variables to use when launching.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/env-var"
|
|
}
|
|
},
|
|
"args": {
|
|
"description": "Command-line arguments to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"replicas": {
|
|
"description": "Number of service replicas to create.",
|
|
"type": "integer"
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
},
|
|
"pathToFunc":
|
|
{
|
|
"description": "Optional path to the function host to be used when launching functions. Can point to either func.dll or the binary.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"azureFunction"
|
|
]
|
|
},
|
|
"executable": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"executable": {
|
|
"description": "The file path (or file name if on the system path) of an executable.",
|
|
"type": "string"
|
|
},
|
|
"workingDirectory": {
|
|
"description": "The working directory to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"description": "Environment variables to use when launching.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/env-var"
|
|
}
|
|
},
|
|
"args": {
|
|
"description": "Command-line arguments to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"replicas": {
|
|
"description": "Number of service replicas to create.",
|
|
"type": "integer"
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"executable"
|
|
]
|
|
},
|
|
"external": {
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"external": {
|
|
"description": "Designates as service as external. External services will not be launched and can only provide bindings.",
|
|
"type": "boolean",
|
|
"const": true
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"repository": {
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"repository":
|
|
{
|
|
"description": "The repository url which will be cloned.",
|
|
"type": "string"
|
|
},
|
|
"cloneDirectory":
|
|
{
|
|
"description": "The directory to clone the repository into.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"repository"
|
|
]
|
|
},
|
|
"include": {
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"include":
|
|
{
|
|
"description": "Path to tye.yaml file which will be used in the application.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"include"
|
|
]
|
|
},
|
|
"image": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"description": "Volumes to mount to the container.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/volume"
|
|
}
|
|
},
|
|
"image": {
|
|
"description": "The name of a Docker image.",
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"description": "Environment variables to use when launching.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/env-var"
|
|
}
|
|
},
|
|
"args": {
|
|
"description": "Command-line arguments to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"replicas": {
|
|
"description": "Number of service replicas to create.",
|
|
"type": "integer"
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"image"
|
|
]
|
|
},
|
|
"dockerFile": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"description": "Volumes to mount to the container.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/volume"
|
|
}
|
|
},
|
|
"dockerFile": {
|
|
"description": "The Dockerfile to use.",
|
|
"type": "string"
|
|
},
|
|
"dockerFileArgs": {
|
|
"description": "Build arguments to use when building the image.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"dockerFileContext": {
|
|
"description": "The Dockerfile context to run docker build on.",
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"description": "Environment variables to use when launching.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/env-var"
|
|
}
|
|
},
|
|
"args": {
|
|
"description": "Command-line arguments to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"replicas": {
|
|
"description": "Number of service replicas to create.",
|
|
"type": "integer"
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"dockerFile"
|
|
]
|
|
},
|
|
"ingress": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The ingress name.",
|
|
"type": "string"
|
|
},
|
|
"bindings": {
|
|
"description": "Bindings for the ingress in local development.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ingress-binding"
|
|
}
|
|
},
|
|
"rules": {
|
|
"description": "Rules for ingress routing.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ingress-rule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ingress-binding": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The binding name.",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"description": "The binding port.",
|
|
"type": "integer"
|
|
},
|
|
"protocol": {
|
|
"description": "The protocol used by the binding",
|
|
"type": "string"
|
|
},
|
|
"ip": {
|
|
"description": "The ip address the ingress listens on.",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ingress-rule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"service": {
|
|
"description": "The service to route traffic when the rule matches.",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "The path prefix to match.",
|
|
"type": "string"
|
|
},
|
|
"host": {
|
|
"description": "The hostname to match.",
|
|
"type": "string"
|
|
},
|
|
"preservePath": {
|
|
"description": "Whether to keep the path that was originally present or not after a prefix match.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"service"
|
|
]
|
|
},
|
|
"project": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "The service name. Must be unique per-application.",
|
|
"type": "string"
|
|
},
|
|
"project": {
|
|
"description": "The relative path to a .NET project file.",
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"description": "Environment variables to use when launching.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/env-var"
|
|
}
|
|
},
|
|
"buildProperties": {
|
|
"description": "Build properties to use when launching or building a project.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/build-property"
|
|
}
|
|
},
|
|
"args": {
|
|
"description": "Command-line arguments to use when launching.",
|
|
"type": "string"
|
|
},
|
|
"build": {
|
|
"description": "Whether to build the project.",
|
|
"type": "boolean"
|
|
},
|
|
"replicas": {
|
|
"description": "Number of service replicas to create.",
|
|
"type": "integer"
|
|
},
|
|
"bindings": {
|
|
"description": "The bindings provided by the service.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/binding"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"project"
|
|
]
|
|
},
|
|
"extension":
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Extension name.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|