Skip to content

Commit

Permalink
api/doc: add manifest schema
Browse files Browse the repository at this point in the history
  • Loading branch information
proppy committed Jul 2, 2014
1 parent ba7fe83 commit 292eed7
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions api/doc/manifest-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"description": "Manifest describing group of [Docker containers](http://docker.io); also used by [Google Cloud Platform's container-vm images](https://developers.google.com/compute/docs/containers).",
"properties": {
"version": {
"type": "string",
"description": "The version of the manifest.",
"enum": [
"v1beta1"
]
},
"containers": {
"type": "array",
"description": "The list of containers to launch.",
"items": {
"type": "object",
"required": [
"image"
],
"properties": {
"name": {
"type": "string",
"description" : "A symbolic name used to create and track the container. Must be an RFC1035 compatible value (a single segment of a DNS name). All containers must have unique names."
},
"image": {
"type": "string",
"description" : "The container image to run."
},
"command": {
"type": "array",
"description" : "The command line to run. If this is omitted, the container is assumed to have a command embedded in it.",
"items": {
"type": "string"
}
},
"workingDir": {
"type": "string",
"description" : "The initial working directory for the command. Default is the container’s embedded working directory or else the Docker default."
},
"volumeMounts": {
"type": "array",
"description" : "Data volumes to expose into the container.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description" : "The name of the volume to mount. This must match the name of a volume defined in volumes[]."
},
"mountPath": {
"type": "string",
"description" : "The path at which to mount the volume inside the container. This must be an absolute path and no longer than 512 characters."
},
"readOnly": {
"type": "boolean",
"description" : "Whether this volume should be read-only. Default is false (read-write)."
}
}
}
},
"ports": {
"type": "array",
"description" : "Ports to expose from the container. All of these are exposed out through the public interface of the VM.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description" : "A symbolic name used to create and track the port. Must be an RFC1035 compatible value (a single segment of a DNS name)."
},
"containerPort": {
"type": "integer",
"description" : "The port on which the container is listening."
},
"hostPort": {
"type": "integer",
"description" : "The port on the host which maps to the containerPort. Default is auto-allocated."
},
"protocol": {
"type": "string",
"description" : "The protocol for this port. Valid options are TCP and UDP. Default is TCP."
}
}
}
},
"env": {
"type": "array",
"description" : "Environment variables to set before the container runs.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description" : "The name of the environment variable."
},
"value": {
"type": "string",
"description" : "The value of the environment variable."
}
}
}
}
}
}
},
"volumes": {
"type": "array",
"description" : "A list of volumes to share between containers.",
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description" : "The name of the volume. Must be an RFC1035 compatible value (a single segment of a DNS name). All volumes must have unique names. These are referenced by `containers[].volumeMounts[].name`.",
"pattern": "^[a-z]([-a-z0-9]*[a-z0-9])*"
}
},
"required": [
"name"
]
}
}
}
}

0 comments on commit 292eed7

Please sign in to comment.