From 77b9d95273f6056d683594375dac9d3d70565a38 Mon Sep 17 00:00:00 2001 From: Usha Mandya Date: Mon, 23 Mar 2020 16:46:42 +0000 Subject: [PATCH] Remove Template docs --- .../application-template/docker_template.yaml | 23 - .../docker_template_config.yaml | 17 - .../docker_template_config_set.yaml | 48 -- .../docker_template_config_view.yaml | 22 - .../docker_template_inspect.yaml | 22 - .../docker_template_list.yaml | 32 -- .../docker_template_scaffold.yaml | 70 --- .../docker_template_version.yaml | 12 - _data/toc.yaml | 22 - app-template/api-reference.md | 161 ------ app-template/working-with-template.md | 528 ------------------ engine/reference/commandline/template.md | 15 - .../reference/commandline/template_config.md | 15 - .../commandline/template_config_set.md | 15 - .../commandline/template_config_view.md | 15 - .../reference/commandline/template_inspect.md | 15 - engine/reference/commandline/template_list.md | 15 - .../commandline/template_scaffold.md | 15 - .../reference/commandline/template_version.md | 15 - 19 files changed, 1077 deletions(-) delete mode 100644 _data/application-template/docker_template.yaml delete mode 100644 _data/application-template/docker_template_config.yaml delete mode 100644 _data/application-template/docker_template_config_set.yaml delete mode 100644 _data/application-template/docker_template_config_view.yaml delete mode 100644 _data/application-template/docker_template_inspect.yaml delete mode 100644 _data/application-template/docker_template_list.yaml delete mode 100644 _data/application-template/docker_template_scaffold.yaml delete mode 100644 _data/application-template/docker_template_version.yaml delete mode 100644 app-template/api-reference.md delete mode 100644 app-template/working-with-template.md delete mode 100644 engine/reference/commandline/template.md delete mode 100644 engine/reference/commandline/template_config.md delete mode 100644 engine/reference/commandline/template_config_set.md delete mode 100644 engine/reference/commandline/template_config_view.md delete mode 100644 engine/reference/commandline/template_inspect.md delete mode 100644 engine/reference/commandline/template_list.md delete mode 100644 engine/reference/commandline/template_scaffold.md delete mode 100644 engine/reference/commandline/template_version.md diff --git a/_data/application-template/docker_template.yaml b/_data/application-template/docker_template.yaml deleted file mode 100644 index 09522844af..0000000000 --- a/_data/application-template/docker_template.yaml +++ /dev/null @@ -1,23 +0,0 @@ -command: docker template -short: Use templates to quickly create new services -long: Use templates to quickly create new services -pname: docker -plink: docker.yaml -cname: -- docker template config -- docker template inspect -- docker template list -- docker template scaffold -- docker template version -clink: -- docker_template_config.yaml -- docker_template_inspect.yaml -- docker_template_list.yaml -- docker_template_scaffold.yaml -- docker_template_version.yaml -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_config.yaml b/_data/application-template/docker_template_config.yaml deleted file mode 100644 index a3a6854c30..0000000000 --- a/_data/application-template/docker_template_config.yaml +++ /dev/null @@ -1,17 +0,0 @@ -command: docker template config -short: Modify docker template configuration -long: Modify docker template configuration -pname: docker template -plink: docker_template.yaml -cname: -- docker template config set -- docker template config view -clink: -- docker_template_config_set.yaml -- docker_template_config_view.yaml -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_config_set.yaml b/_data/application-template/docker_template_config_set.yaml deleted file mode 100644 index de480e86d8..0000000000 --- a/_data/application-template/docker_template_config_set.yaml +++ /dev/null @@ -1,48 +0,0 @@ -command: docker template config set -short: set default values for docker template -long: set default values for docker template -usage: docker template config set -pname: docker template config -plink: docker_template_config.yaml -options: -- option: feedback - value_type: bool - default_value: "false" - description: | - Send anonymous feedback about usage (performance, failure status, os, version) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: no-feedback - value_type: bool - default_value: "false" - description: Don't send anonymous feedback - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: org - value_type: string - description: Set default organization / docker hub user - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: server - value_type: string - description: Set default registry server (host[:port]) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_config_view.yaml b/_data/application-template/docker_template_config_view.yaml deleted file mode 100644 index dbf810ef63..0000000000 --- a/_data/application-template/docker_template_config_view.yaml +++ /dev/null @@ -1,22 +0,0 @@ -command: docker template config view -short: view default values for docker template -long: view default values for docker template -usage: docker template config view -pname: docker template config -plink: docker_template_config.yaml -options: -- option: format - value_type: string - default_value: yaml - description: Configure the output format (json|yaml) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_inspect.yaml b/_data/application-template/docker_template_inspect.yaml deleted file mode 100644 index a7b8f44c72..0000000000 --- a/_data/application-template/docker_template_inspect.yaml +++ /dev/null @@ -1,22 +0,0 @@ -command: docker template inspect -short: Inspect service templates or application templates -long: Inspect service templates or application templates -usage: docker template inspect -pname: docker template -plink: docker_template.yaml -options: -- option: format - value_type: string - default_value: pretty - description: Configure the output format (pretty|json|yaml) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_list.yaml b/_data/application-template/docker_template_list.yaml deleted file mode 100644 index f467e65536..0000000000 --- a/_data/application-template/docker_template_list.yaml +++ /dev/null @@ -1,32 +0,0 @@ -command: docker template list -aliases: ls -short: List available templates with their informations -long: List available templates with their informations -usage: docker template list -pname: docker template -plink: docker_template.yaml -options: -- option: format - value_type: string - default_value: pretty - description: Configure the output format (pretty|json|yaml) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: type - value_type: string - default_value: all - description: Filter by type (application|service|all) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_scaffold.yaml b/_data/application-template/docker_template_scaffold.yaml deleted file mode 100644 index fd12bf4059..0000000000 --- a/_data/application-template/docker_template_scaffold.yaml +++ /dev/null @@ -1,70 +0,0 @@ -command: docker template scaffold -short: Choose an application template or service template(s) and scaffold a new project -long: Choose an application template or service template(s) and scaffold a new project -usage: docker template scaffold application [...] OR scaffold [alias=]service - [<[alias=]service>...] -pname: docker template -plink: docker_template.yaml -options: -- option: name - value_type: string - description: Application name - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: org - value_type: string - description: | - Deploy to a specific organization / docker hub user (if not specified, it will use your current hub login) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: path - value_type: string - description: Deploy to a specific path - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: platform - value_type: string - default_value: linux - description: Target platform (linux|windows) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: server - value_type: string - description: Deploy to a specific registry server (host[:port]) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -- option: set - shorthand: s - value_type: stringArray - default_value: '[]' - description: Override parameters values (service.name=value) - deprecated: false - experimental: false - experimentalcli: false - kubernetes: false - swarm: false -examples: "docker template scaffold react-java-mysql -s back.java=10 -s front.externalPort=80 - \ndocker template scaffold react-java-mysql java=back reactjs=front -s reactjs.externalPort=80 - \ndocker template scaffold back=spring front=react -s back.externalPort=9000 \ndocker - template scaffold react-java-mysql --server=myregistry:5000 --org=myorg" -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/application-template/docker_template_version.yaml b/_data/application-template/docker_template_version.yaml deleted file mode 100644 index 4b77712296..0000000000 --- a/_data/application-template/docker_template_version.yaml +++ /dev/null @@ -1,12 +0,0 @@ -command: docker template version -short: Print version information -long: Print version information -usage: docker template version -pname: docker template -plink: docker_template.yaml -deprecated: false -experimental: false -experimentalcli: true -kubernetes: false -swarm: false - diff --git a/_data/toc.yaml b/_data/toc.yaml index 0522456ff6..6a3310cd26 100644 --- a/_data/toc.yaml +++ b/_data/toc.yaml @@ -769,24 +769,6 @@ reference: title: docker system prune - path: /engine/reference/commandline/tag/ title: docker tag - - sectiontitle: docker template - section: - - path: /engine/reference/commandline/template/ - title: docker template - - path: /engine/reference/commandline/template_config/ - title: docker template config - - path: /engine/reference/commandline/template_config_set/ - title: docker template config set - - path: /engine/reference/commandline/template_config_view/ - title: docker template config view - - path: /engine/reference/commandline/template_inspect/ - title: docker template inspect - - path: /engine/reference/commandline/template_list/ - title: docker template list - - path: /engine/reference/commandline/template_scaffold/ - title: docker template scaffold - - path: /engine/reference/commandline/template_version/ - title: docker template version - path: /engine/reference/commandline/top/ title: docker top - sectiontitle: docker trust @@ -951,8 +933,6 @@ reference: title: v1.18 reference - title: Registry API path: /registry/spec/api/ - - title: Template API - path: /app-template/api-reference/ - title: Dockerfile reference path: /engine/reference/builder/ - sectiontitle: Compose file reference @@ -1259,8 +1239,6 @@ manuals: title: Trust chain - path: /docker-hub/publish/byol/ title: Bring Your Own License (BYOL) -- path: /app-template/working-with-template/ - title: Docker Template - sectiontitle: Open-source projects section: - sectiontitle: Notary diff --git a/app-template/api-reference.md b/app-template/api-reference.md deleted file mode 100644 index f0a5064917..0000000000 --- a/app-template/api-reference.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Docker Template API reference -description: Docker Template API reference -keywords: application, template, API, definition ---- - -This page contains information about the Docker Template API reference. - -## Service template definition - -The following section provides information about the valid parameters that you can use when you create a service template definition. - -``` -apiVersion: v1alpha1 -kind: ServiceTemplate -metadata: - name: angular - platforms: - - linux -spec: - title: Angular - description: Angular service - icon: https://cdn.worldvectorlogo.com/logos/angular-icon-1.svg - source: - image: docker.io/myorg/myservice:version - parameters: - - name: node - description: Node version - type: enum - defaultValue: "9" - values: - - value: "10" - description: "10" - - value: "9" - description: "9" - - value: "8" - description: "8" - - name: externalPort - description: External port - defaultValue: "8080" - type: hostPort -``` - -### root - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| apiVersion |yes | The api format version. Current latest is v1alpha1| -|kind| yes|The kind of object. Must be `ServiceTemplate` For services templates.| - -### metadata - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -|name |yes | The identifier for this service. Must be unique within a given library. | -|platform| yes|A list of allowed target platforms. Possible options are `windows` and `linux`| - -### spec - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| title |yes |The label for this service, as displayed when listed in `docker template` commands or in the `application-designer`| -|description| no|A short description for this service| -|icon|no|An icon representing the service. Only used in the Application Designer| - -### spec/source - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| image |yes| The name of the image associated with this service template. Must be in full `repo/org/service:version` format| - -### spec/parameters - -The parameters section allows to specify the input parameters that are going to be used by the service. - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -|name |yes| The identifier for this parameter. Must be unique within the service parameters. | -|description| no|A short description of the parameter. Will be used as label in the Application Designer| -|type| yes|The type of the parameter. Possible options are: `string` - The default type, with no validation or specific features. `enum` - Allow the user to choose a value included in a specific list of options. Must specify the values parameter. `hostPort` - Specify that this parameter is a port that is going to be exposed. Use port format regexp validation, and avoid duplicate ports within an application.| -|defaultValue| yes|The default value for this parameter. For enum type, must be a valid value from the values list.| -|values| no|For enum type, specify a list of value with a value/description tuple.| - -## Application template definition - -The following section provides information about the valid parameters that you can use when you create a application template definition. - -``` -apiVersion: v1alpha1 -kind: ApplicationTemplate -metadata: - name: nginx-flask-mysql - platforms: - - linux -spec: - title: Flask / NGINX / MySQL application - description: Sample Python/Flask application with an Nginx proxy and a MySQL database - services: - - name: back - serviceId: flask - parameters: - externalPort: "80" - - name: db - serviceId: mysql - - name: proxy - serviceId: nginx -``` - -### root - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| apiVersion |yes | The api format version. Current latest is v1alpha1| -|kind| yes|The kind of object. Must be `ApplicationTemplate` For application templates.| - -### metadata - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -|name |yes | The identifier for this application template. Must be unique within a given library.| -|platform| yes|A list of allowed target platforms. Possible options are `windows` and `linux`| - -### spec - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| title |yes |The label for this application template, as displayed when listed in `docker template` commands or in `application-designer` | -|description| no|A short description for this service| - -### spec/services - -This section lists the service templates used in the application. - -| Parameter |Required? | Description | -| :----------------------|:----------------------|:----------------------------------------| -| name |yes|The name of the service. It will be used for image name and for subfolder within the application structure. | -|serviceId |yes|The id of the service to use (equivalent to the metadata/name field of the service) | -| parameters |no|A map (string to string) that can be used to override the default values of the service parameters.| - -## Service configuration file - -The file is mounted at `/run/configuration` in every service template container and contains the template context in a JSON format. - -| Parameter |Description | -| :----------------------|:----------------------| -|ServiceId |The service id| -| name |The name of the service as specified by the application template or overridden by the user| -|parameters |A map (string to string) containing the service’s parameter values.| -| targetPath |The destination folder for the application on the host machine.| -|namespace |The service image’s namespace (org and user)| -|services |A list containing all the services of the application (see below)| - -### Attributes - -The items in the services list contains the following attributes: - -| Parameter |Description | -| :----------------------|:----------------------| -|serviceId |The service id| -| name |The name of the service as specified by the application template or overridden by the user| -| parameters |A map (string to string) containing the service’s parameter values.| \ No newline at end of file diff --git a/app-template/working-with-template.md b/app-template/working-with-template.md deleted file mode 100644 index bd6c062677..0000000000 --- a/app-template/working-with-template.md +++ /dev/null @@ -1,528 +0,0 @@ ---- -title: Docker Template -description: Working with Docker Template -keywords: Docker, application template, Application Designer, ---- - ->This is an experimental feature. -> ->{% include experimental.md %} - -## Overview - -Docker Template is a CLI plugin that introduces a top-level `docker template` -command that allows users to create new Docker applications by using a library -of templates. There are two types of templates — service templates and -application templates. - -A _service template_ is a container image that generates code and contains the -metadata associated with the image. - -- The container image takes `/run/configuration` mounted file as input to - generate assets such as code, Dockerfile, and `docker-compose.yaml` for a -given service, and writes the output to the `/project` mounted folder. - -- The metadata file that describes the service template is called the service - definition. It contains the name of the service, description, and available -parameters such as ports, volumes, etc. For a complete list of parameters that -are allowed, see [Docker Template API -reference](/app-template/api-reference/). - -An _application template_ is a collection of one or more service templates. An -application template generates a Dockerfile per service and only one Compose -file for the entire application, aggregating all services. - -## Create a custom service template - -A Docker template contains a predefined set of service and application -templates. To create a custom template based on your requirements, you must -complete the following steps: - -1. Create a service container image -2. Create the service template definition -3. Add the service template to the library -4. Share the service template - -### Create a service container image - -A service template provides the description required by Docker Template to -scaffold a project. A service template runs inside a container with two bind -mounts: - -1. `/run/configuration`, a JSON file which contains all settings such as - parameters, image name, etc. For example: - - ```json - { - "parameters": { - "externalPort": "80", - "artifactId": "com.company.app" - }, - ... - } - ``` - -2. `/project`, the output folder to which the container image writes the generated assets. - -#### Basic service template - -Services that generate a template using code must contain the following files -that are valid: - -- A *Dockerfile* located at the root of the `my-service` folder. This is the - Dockerfile that is used for the service when running the application. - -- A *docker-compose.yaml* file located at the root of the `my-service` folder. - The `docker-compose.yaml` file must contain the service declaration and any -optional volumes or secrets. - -Here’s an example of a simple NodeJS service: - -```bash -my-service -├── Dockerfile # The Dockerfile of the service template -└── assets - ├── Dockerfile # The Dockerfile of the generated service - └── docker-compose.yaml # The service declaration -``` - -The NodeJS service contains the following files: - -`my-service/Dockerfile` - -```dockerfile -FROM alpine -COPY assets /assets -CMD ["cp", "/assets", "/project"] -FROM dockertemplate/interpolator:v0.1.5 as interpolator -COPY assets /assets -``` - -`my-service/assets/docker-compose.yaml` - -{% raw %} -```yaml -version: "3.6" -services: - {{ .Name }}: - build: {{ .Name }} - ports: - - {{ .Parameters.externalPort }}:3000 -``` -{% endraw %} - -`my-service/assets/Dockerfile` - -```dockerfile -FROM NODE:9 -WORKDIR /app -COPY package.json . -RUN yarn install -COPY . . -CMD ["yarn", "run", "start"] -``` - -> **Note:** After scaffolding the template, you can add the default files your -> template contains to the `assets` folder. - -The next step is to build and push the service template image to a remote -repository by running the following command: - -```bash -cd [...]/my-service -docker build -t org/my-service . -docker push org/my-service -``` - -### Create the service template definition - -The service definition contains metadata that describes a service template. It -contains the name of the service, description, and available parameters such as -ports, volumes, etc. After creating the service definition, you can proceed to -[Add templates to Docker Template](#add-templates-to-docker-template) to add -the service definition to the Docker Template repository. - -Of all the available service and application definitions, Docker Template has -access to only one catalog, referred to as the ‘repository’. It uses the -catalog content to display service and application templates to the end user. - -Here is an example of the Express service definition: - -```yaml -- apiVersion: v1alpha1 # constant - kind: ServiceTemplate # constant - metadata: - name: Express # the name of the service - platforms: - - linux - spec: - title: Express # The title/label of the service - icon: https://docker-application-template.s3.amazonaws.com/assets/express.png # url for an icon - description: NodeJS web application with Express server - source: - image: org/my-service:latest -``` - -The most important section here is `image: org/my-service:latest`. This is the -image associated with this service template. You can use this line to point to -any image. For example, you can use an Express image directly from the hub -`docker.io/dockertemplate/express:latest` or from the DTR private repository -`myrepo/my-service:latest`. The other properties in the service definition are -mostly metadata for display and indexation purposes. - -#### Adding parameters to the service - -Now that you have created a simple express service, you can customize it based -on your requirements. For example, you can choose the version of NodeJS to use -when running the service. - -To customize a service, you need to complete the following tasks: - -1. Declare the parameters in the service definition. This tells Docker Template - whether or not the CLI can accept the parameters, and allows the - [Application Designer](/ee/desktop/app-designer) to be aware of the new - options. - -2. Use the parameters during service construction. - -#### Declare the parameters - -Add the parameters available to the application. The following example adds the -NodeJS version and the external port: - -```yaml -- [...] - spec: - [...] - parameters: - - name: node - defaultValue: "9" - description: Node version - type: enum - values: - - value: "10" - description: "10" - - value: "9" - description: "9" - - value: "8" - description: "8" - - defaultValue: "3000" - description: External port - name: externalPort - type: hostPort - [...] -``` - -#### Use the parameters during service construction - -When you run the service template container, a volume is mounted making the -service parameters available at `/run/configuration`. - -The file matches the following go struct: - -```golang -type TemplateContext struct { - ServiceID string `json:"serviceId,omitempty"` - Name string `json:"name,omitempty"` - Parameters map[string]string `json:"parameters,omitempty"` - - TargetPath string `json:"targetPath,omitempty"` - Namespace string `json:"namespace,omitempty"` - - Services []ConfiguredService `json:"services,omitempty"` -} -``` - -Where `ConfiguredService` is: - -```go -type ConfiguredService struct { - ID string `json:"serviceId,omitempty"` - Name string `json:"name,omitempty"` - Parameters map[string]string `json:"parameters,omitempty"` -} -``` - -You can then use the file to obtain values for the parameters and use this -information based on your requirements. However, in most cases, the JSON file -is used to interpolate the variables. Therefore, we provide a utility called -`interpolator` that expands variables in templates. For more information, see -[Interpolator](#interpolator). - -To use the `interpolator` image, update `my-service/Dockerfile` to use the -following Dockerfile: - -```dockerfile -FROM dockertemplate/interpolator:v0.1.5 -COPY assets . -``` - -> **Note:** The interpolator tag must match the version used in Docker -> Template. Verify this using the `docker template version` command . - -This places the interpolator image in the `/assets` folder and copies the -folder to the target `/project` folder. If you prefer to do this manually, use -a Dockerfile instead: - -```dockerfile -WORKDIR /assets -CMD ["/interpolator", "-config", "/run/configuration", "-source", "/assets", "-destination", "/project"] -``` - -When this is complete, use the newly added node option in -`my-service/assets/Dockerfile`, by replacing the line: - -`FROM node:9` - -with - -{% raw %}`FROM node:{{ .Parameters.node }}`{% endraw %} - -Now, build and push the image to your repository. - -### Add service template to the library - -You must add the service to a repository file in order to see it when you run -the `docker template ls` command, or to make the service available in the -Application Designer. - -#### Create the repository file - -Create a local repository file called `library.yaml` anywhere on your local -drive and add the newly created service definitions and application definitions -to it. - -`library.yaml` - -```yaml -apiVersion: v1alpha1 -kind: RepositoryContent -services: # List of service templates available -- apiVersion: v1alpha1 # here is the service definition for our service template. - kind: ServiceTemplate - name: express - spec: - title: Express - [...] -``` - -#### Add the local repository to docker-template settings - -> **Note:** You can also use the instructions in this section to add templates -> to the [Application Designer](/ee/desktop/app-designer). - -Now that you have created a local repository and added service definitions to -it, you must make Docker Template aware of these. To do this: - -1. Edit `~/.docker/application-template/preferences.yaml` as follows: - - ```yaml - apiVersion: v1alpha1 - channel: master - kind: Preferences - repositories: - - name: library-master - url: https://docker-application-template.s3.amazonaws.com/master/library.yaml - ``` - -2. Add your local repository: - -> **Note:** Do not remove or comment out the default library `library-master`. -> This library contain template plugins that are required to build all Docker -> Templates. - - ```yaml - apiVersion: v1alpha1 - channel: master - kind: Preferences - repositories: - - name: custom-services - url: file:///path/to/my/library.yaml - - name: library-master - url: https://docker-application-template.s3.amazonaws.com/master/library.yaml - ``` - -When configuring a local repository on Windows, the `url` structure is slightly -different: - -```yaml -- name: custom-services - url: file://c:/path/to/my/library.yaml -``` - -After updating the `preferences.yaml` file, run `docker template ls` or restart -the Application Designer and select **Custom application**. The new service -should now be visible in the list of available services. - -### Share custom service templates - -To share a custom service template, you must complete the following steps: - -1. Push the image to an available endpoint (for example, Docker Hub) - -2. Share the service definition (for example, GitHub) - -3. Ensure the receiver has modified their `preferences.yaml` file to point to - the service definition that you have shared, and are permitted to accept - remote images. - -## Create a custom application template - -An application template is a collection of one or more service templates. You -must complete the following steps to create a custom application template: - -1. Create an application template definition - -2. Add the application template to the library - -3. Share your custom application template - -### Create the application definition - -An application template definition contains metadata that describes an -application template. It contains information such as the name and description -of the template, the services it contains, and the parameters for each of the -services. - -Before you create an application template definition, you must create a -repository that contains the services you are planning to include in the -template. For more information, see [Create the repository -file](#create-the-repository-file). - -For example, to create an Express and MySQL application, the application -definition must be similar to the following yaml file: - -```yaml -apiVersion: v1alpha1 #constant -kind: ApplicationTemplate #constant -metadata: - name: express-mysql #the name of the application - platforms: - - linux -spec: - description: Sample application with a NodeJS backend and a MySQL database - services: # list of the services - - name: back - serviceId: express # service name - parameters: # (optional) define the default application parameters - externalPort: 9000 - - name: db - serviceId: mysql - title: Express / MySQL application -``` - -### Add the template to the library - -Create a local repository file called `library.yaml` anywhere on your local -drive. If you have already created the `library.yaml` file, add the application -definitions to it. - -`library.yaml` - -```yaml -apiVersion: v1alpha1 -kind: RepositoryContent -services: # List of service templates available -- apiVersion: v1alpha1 # here is the service definition for our service template. - kind: ServiceTemplate - name: express - spec: - title: Express - [...] -templates: # List of application templates available -- apiVersion: v1alpha1 #constant - kind: ApplicationTemplate # here is the application definition for our application template - metadata: - name: express-mysql - spec: -``` - -### Add the local repository to `docker-template` settings - -Now that you have created a local repository and added application definitions, -you must make Docker Template aware of these. To do this: - -1. Edit `~/.docker/application-template/preferences.yaml` as follows: - - ```yaml - apiVersion: v1alpha1 - channel: master - kind: Preferences - repositories: - - name: library-master - url: https://docker-application-template.s3.amazonaws.com/master/library.yaml - ``` - -2. Add your local repository: - -> **Note:** Do not remove or comment out the default library `library-master`. -> This library contain template plugins that are required to build all Docker -> Templates. - - ```yaml - apiVersion: v1alpha1 - channel: master - kind: Preferences - repositories: - - name: custom-services - url: file:///path/to/my/library.yaml - - name: library-master - url: https://docker-application-template.s3.amazonaws.com/master/library.yaml - ``` - -When configuring a local repository on Windows, the `url` structure is slightly -different: - -```yaml -- name: custom-services - url: file://c:/path/to/my/library.yaml -``` - -After updating the `preferences.yaml` file, run `docker template ls` or restart -the Application Designer and select **Custom application**. The new template -should now be visible in the list of available templates. - -### Share the custom application template - -To share a custom application template, you must complete the following steps: - -1. Push the image to an available endpoint (for example, Docker Hub) - -2. Share the application definition (for example, GitHub) - -3. Ensure the receiver has modified their `preferences.yaml` file to point to - the application definition that you have shared, and are permitted to accept - remote images. - -## Interpolator - -The `interpolator` utility is basically an image containing a binary which: - -- takes a folder (assets folder) and the service parameter file as input, -- replaces variables in the input folder using the parameters specified by the - user (for example, the service name, external port, etc), and -- writes the interpolated files to the destination folder. - -The interpolator implementation uses [Golang -template](https://golang.org/pkg/text/template/) to aggregate the services to -create the final application. If your service template uses the `interpolator` -image by default, it expects all the asset files to be located in the `/assets` -folder: - -`/interpolator -source /assets -destination /project` - -However, you can create your own scaffolding script that performs calls to the -`interpolator`. - -> **Note:** It is not mandatory to use the `interpolator` utility. You can use -> a utility of your choice to handle parameter replacement and file copying to -> achieve the same result. - -The following table lists the `interpolator` binary options: - - | Parameter | Default value | Description | - | :----------------|:---------------------|:--------------------------------------------------------------| - | `-source` | none | Source file or folder to interpolate from | - | `-destination` | none | Destination file or folder to copy the interpolated files to | - | `-config` | `/run/configuration` | The path to the json configuration file | - | `-skip-template` | false | If set to `true`, it copies assets without any transformation | diff --git a/engine/reference/commandline/template.md b/engine/reference/commandline/template.md deleted file mode 100644 index b998a70b41..0000000000 --- a/engine/reference/commandline/template.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template -title: docker template -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_config.md b/engine/reference/commandline/template_config.md deleted file mode 100644 index f3ea7cda57..0000000000 --- a/engine/reference/commandline/template_config.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_config -title: docker template config -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_config_set.md b/engine/reference/commandline/template_config_set.md deleted file mode 100644 index 1d1e457a6a..0000000000 --- a/engine/reference/commandline/template_config_set.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_config_set -title: docker template config set -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_config_view.md b/engine/reference/commandline/template_config_view.md deleted file mode 100644 index b53d8df573..0000000000 --- a/engine/reference/commandline/template_config_view.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_config_view -title: docker template config view -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_inspect.md b/engine/reference/commandline/template_inspect.md deleted file mode 100644 index 29d5a405a1..0000000000 --- a/engine/reference/commandline/template_inspect.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_inspect -title: docker template inspect -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_list.md b/engine/reference/commandline/template_list.md deleted file mode 100644 index f83c5d6ca6..0000000000 --- a/engine/reference/commandline/template_list.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_list -title: docker template list -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_scaffold.md b/engine/reference/commandline/template_scaffold.md deleted file mode 100644 index 14d8900167..0000000000 --- a/engine/reference/commandline/template_scaffold.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_scaffold -title: docker template scaffold -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %} diff --git a/engine/reference/commandline/template_version.md b/engine/reference/commandline/template_version.md deleted file mode 100644 index 34d0315745..0000000000 --- a/engine/reference/commandline/template_version.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -datafolder: application-template -datafile: docker_template_version -title: docker template version -enterprise_only: true -skip_read_time: true ---- - -{% include cli.md datafolder=page.datafolder datafile=page.datafile %}