mirror of https://github.com/docker/docs.git
Remove Template docs
This commit is contained in:
parent
2caa6c64e6
commit
77b9d95273
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 <service or application>
|
||||
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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 [<alias=service>...] 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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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.|
|
|
@ -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 |
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template
|
||||
title: docker template
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_config
|
||||
title: docker template config
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_config_set
|
||||
title: docker template config set
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_config_view
|
||||
title: docker template config view
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_inspect
|
||||
title: docker template inspect
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_list
|
||||
title: docker template list
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_scaffold
|
||||
title: docker template scaffold
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
datafolder: application-template
|
||||
datafile: docker_template_version
|
||||
title: docker template version
|
||||
enterprise_only: true
|
||||
skip_read_time: true
|
||||
---
|
||||
<!--
|
||||
This page is automatically generated from Docker's source code. If you want to
|
||||
suggest a change to the text that appears here, open a ticket in the documentation
|
||||
repository:
|
||||
|
||||
https://github.com/docker/docker.github.io/issues/new
|
||||
-->
|
||||
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
|
Loading…
Reference in New Issue