reference: remove docs for deprecated "docker app"

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2023-01-07 14:22:08 +01:00
parent 1d1cf4251e
commit 0f35683784
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
32 changed files with 21 additions and 1350 deletions

View File

@ -1,40 +0,0 @@
command: docker app
short: Docker Application
long: A tool to build and manage Docker Applications.
pname: docker
plink: docker.yaml
cname:
- docker app bundle
- docker app completion
- docker app init
- docker app inspect
- docker app install
- docker app list
- docker app pull
- docker app push
- docker app render
- docker app status
- docker app uninstall
- docker app upgrade
- docker app validate
- docker app version
clink:
- docker_app_bundle.yaml
- docker_app_completion.yaml
- docker_app_init.yaml
- docker_app_inspect.yaml
- docker_app_install.yaml
- docker_app_list.yaml
- docker_app_pull.yaml
- docker_app_push.yaml
- docker_app_render.yaml
- docker_app_status.yaml
- docker_app_uninstall.yaml
- docker_app_upgrade.yaml
- docker_app_validate.yaml
- docker_app_version.yaml
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,24 +0,0 @@
command: docker app bundle
short: Create a CNAB invocation image and `bundle.json` for the application
long: Create a CNAB invocation image and `bundle.json` for the application
usage: docker app bundle [APP_NAME] [--output OUTPUT_FILE]
pname: docker app
plink: docker_app.yaml
options:
- option: output
shorthand: o
value_type: string
default_value: bundle.json
description: Output file (- for stdout)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app bundle myapp.dockerapp
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,24 +0,0 @@
command: docker app completion
short: Generates completion scripts for the specified shell (bash or zsh)
long: |
# Load the "docker app" completion code for bash into the current shell
. <(docker app completion bash)
# Set the "docker app" completion code for bash to autoload on startup in your ~/.bashrc,
# ~/.profile or ~/.bash_profile
. <(docker app completion bash)
# Note: bash-completion is needed.
# Load the "docker app" completion code for zsh into the current shell
source <(docker app completion zsh)
# Set the "docker app" completion code for zsh to autoload on startup in your ~/.zshrc,
source <(docker app completion zsh)
usage: docker app completion SHELL
pname: docker app
plink: docker_app.yaml
examples: $ . <(docker app completion bash)
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,51 +0,0 @@
command: docker app init
short: Initialize Docker Application definition
long: Start building a Docker Application package. If there is a docker-compose.yml
file in the current directory it will be copied and used.
usage: docker app init APP_NAME [--compose-file COMPOSE_FILE] [--description DESCRIPTION]
[--maintainer NAME:EMAIL ...] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: compose-file
value_type: string
description: Compose file to use as application base (optional)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: description
value_type: string
description: Human readable description of your application (optional)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: maintainer
value_type: stringArray
default_value: '[]'
description: |
Name and email address of person responsible for the application (name:email) (optional)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: single-file
value_type: bool
default_value: "false"
description: Create a single-file Docker Application definition
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app init myapp --description "a useful description"
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,52 +0,0 @@
command: docker app inspect
short: Shows metadata, parameters and a summary of the Compose file for a given application
long: Shows metadata, parameters and a summary of the Compose file for a given application
usage: docker app inspect [APP_NAME] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: parameters-file
value_type: stringArray
default_value: '[]'
description: Override parameters file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: pull
value_type: bool
default_value: "false"
description: Pull the bundle
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: set
shorthand: s
value_type: stringArray
default_value: '[]'
description: Override parameter value
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app inspect myapp.dockerapp
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,115 +0,0 @@
command: docker app install
aliases: deploy
short: Install an application
long: |-
Install an application.
By default, the application definition in the current directory will be
installed. The APP_NAME can also be:
- a path to a Docker Application definition (.dockerapp) or a CNAB bundle.json
- a registry Application Package reference
usage: docker app install [APP_NAME] [--name INSTALLATION_NAME] [--target-context
TARGET_CONTEXT] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: credential-set
value_type: stringArray
default_value: '[]'
description: |
Use a YAML file containing a credential set or a credential set present in the credential store
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: kubernetes-namespace
value_type: string
default_value: default
description: Kubernetes namespace to install into
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: name
value_type: string
description: Installation name (defaults to application name)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: orchestrator
value_type: string
description: Orchestrator to install on (swarm, kubernetes)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: parameters-file
value_type: stringArray
default_value: '[]'
description: Override parameters file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: pull
value_type: bool
default_value: "false"
description: Pull the bundle
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: set
shorthand: s
value_type: stringArray
default_value: '[]'
description: Override parameter value
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: target-context
value_type: string
description: |
Context on which the application is installed (default: <current-context>)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: with-registry-auth
value_type: bool
default_value: "false"
description: Sends registry auth
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: |-
$ docker app install myapp.dockerapp --name myinstallation --target-context=mycontext
$ docker app install myrepo/myapp:mytag --name myinstallation --target-context=mycontext
$ docker app install bundle.json --name myinstallation --credential-set=mycredentials.yml
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,22 +0,0 @@
command: docker app list
aliases: ls
short: List the installations and their last known installation result
long: List the installations and their last known installation result
usage: docker app list [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: target-context
value_type: string
description: List installations on this context
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,24 +0,0 @@
command: docker app pull
short: Pull an application package from a registry
long: Pull an application package from a registry
usage: docker app pull NAME:TAG [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app pull docker/app-example:0.1.0
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,44 +0,0 @@
command: docker app push
short: Push an application package to a registry
long: Push an application package to a registry
usage: docker app push [APP_NAME] --tag TARGET_REFERENCE [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: platform
value_type: stringSlice
default_value: '[]'
description: |
For multi-arch service images, only push the specified platforms
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: tag
shorthand: t
value_type: string
description: |
Target registry reference (default: <name>:<version> from metadata)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app push myapp --tag myrepo/myapp:mytag
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,72 +0,0 @@
command: docker app render
short: Render the Compose file for an Application Package
long: Render the Compose file for an Application Package
usage: docker app render [APP_NAME] [--set KEY=VALUE ...] [--parameters-file PARAMETERS-FILE
...] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: formatter
value_type: string
default_value: yaml
description: Configure the output format (yaml|json)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: output
shorthand: o
value_type: string
default_value: '-'
description: Output file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: parameters-file
value_type: stringArray
default_value: '[]'
description: Override parameters file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: pull
value_type: bool
default_value: "false"
description: Pull the bundle
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: set
shorthand: s
value_type: stringArray
default_value: '[]'
description: Override parameter value
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app render myapp.dockerapp --set key=value
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,43 +0,0 @@
command: docker app status
short: Get the installation status of an application
long: Get the installation status of an application. If the installation is a Docker
Application, the status shows the stack services.
usage: docker app status INSTALLATION_NAME [--target-context TARGET_CONTEXT] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: credential-set
value_type: stringArray
default_value: '[]'
description: |
Use a YAML file containing a credential set or a credential set present in the credential store
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: target-context
value_type: string
description: |
Context on which the application is installed (default: <current-context>)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: with-registry-auth
value_type: bool
default_value: "false"
description: Sends registry auth
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app status myinstallation --target-context=mycontext
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,51 +0,0 @@
command: docker app uninstall
short: Uninstall an application
long: Uninstall an application
usage: docker app uninstall INSTALLATION_NAME [--target-context TARGET_CONTEXT] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: credential-set
value_type: stringArray
default_value: '[]'
description: |
Use a YAML file containing a credential set or a credential set present in the credential store
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: force
value_type: bool
default_value: "false"
description: Force removal of installation
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: target-context
value_type: string
description: |
Context on which the application is installed (default: <current-context>)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: with-registry-auth
value_type: bool
default_value: "false"
description: Sends registry auth
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app uninstall myinstallation --target-context=mycontext
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,88 +0,0 @@
command: docker app upgrade
short: Upgrade an installed application
long: Upgrade an installed application
usage: docker app upgrade INSTALLATION_NAME [--target-context TARGET_CONTEXT] [OPTIONS]
pname: docker app
plink: docker_app.yaml
options:
- option: app-name
value_type: string
description: Override the installation with another Application Package
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: credential-set
value_type: stringArray
default_value: '[]'
description: |
Use a YAML file containing a credential set or a credential set present in the credential store
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: insecure-registries
value_type: stringSlice
default_value: '[]'
description: |
Use HTTP instead of HTTPS when pulling from/pushing to those registries
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: parameters-file
value_type: stringArray
default_value: '[]'
description: Override parameters file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: pull
value_type: bool
default_value: "false"
description: Pull the bundle
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: set
shorthand: s
value_type: stringArray
default_value: '[]'
description: Override parameter value
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: target-context
value_type: string
description: |
Context on which the application is installed (default: <current-context>)
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: with-registry-auth
value_type: bool
default_value: "false"
description: Sends registry auth
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
examples: $ docker app upgrade myinstallation --target-context=mycontext --set key=value
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,32 +0,0 @@
command: docker app validate
short: Checks the rendered application is syntactically correct
long: Checks the rendered application is syntactically correct
usage: docker app validate [APP_NAME] [--set KEY=VALUE ...] [--parameters-file PARAMETERS_FILE]
pname: docker app
plink: docker_app.yaml
options:
- option: parameters-file
value_type: stringArray
default_value: '[]'
description: Override parameters file
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: set
shorthand: s
value_type: stringArray
default_value: '[]'
description: Override parameter value
deprecated: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -1,12 +0,0 @@
command: docker app version
short: Print version information
long: Print version information
usage: docker app version
pname: docker app
plink: docker_app.yaml
deprecated: true
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

View File

@ -243,38 +243,6 @@ reference:
title: Use the Docker command line
- path: /engine/reference/commandline/docker/
title: docker (base command)
- sectiontitle: docker app
section:
- path: /engine/reference/commandline/app/
title: docker app
- path: /engine/reference/commandline/app_bundle/
title: docker app bundle
- path: /engine/reference/commandline/app_completion/
title: docker app completion
- path: /engine/reference/commandline/app_init/
title: docker app init
- path: /engine/reference/commandline/app_inspect/
title: docker app inspect
- path: /engine/reference/commandline/app_install/
title: docker app install
- path: /engine/reference/commandline/app_list/
title: docker app list
- path: /engine/reference/commandline/app_pull/
title: docker app pull
- path: /engine/reference/commandline/app_push/
title: docker app push
- path: /engine/reference/commandline/app_render/
title: docker app render
- path: /engine/reference/commandline/app_status/
title: docker app status
- path: /engine/reference/commandline/app_uninstall/
title: docker app uninstall
- path: /engine/reference/commandline/app_upgrade/
title: docker app upgrade
- path: /engine/reference/commandline/app_validate/
title: docker app validate
- path: /engine/reference/commandline/app_version/
title: docker app version
- path: /engine/reference/commandline/attach/
title: docker attach
- path: /engine/reference/commandline/build/

View File

@ -1,442 +0,0 @@
---
datafolder: docker-app
datafile: docker_app
title: docker app
redirect_from:
- /engine/reference/commandline/app_merge/
- /engine/reference/commandline/app_split/
- /app/working-with-app/
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}
## Overview
Docker App is a CLI plug-in that introduces a top-level `docker app` command to bring
the _container experience_ to applications. The following table compares Docker containers with Docker applications.
| Object | Config file | Build with | Execute with | Share with |
| ------------- |---------------| -------------------|-----------------------|-------------------|
| Container | Dockerfile | docker image build | docker container run | docker image push |
| App | App Package | docker app bundle | docker app install | docker app push |
With Docker App, entire applications can now be managed as easily as images and containers. For example,
Docker App lets you _build_, _validate_ and _deploy_ applications with the `docker app` command. You can
even leverage secure supply-chain features such as signed `push` and `pull` operations.
> **NOTE**: `docker app` works with `Docker 19.03` or higher.
This guide walks you through two scenarios:
1. Initialize and deploy a new Docker App project from scratch.
2. Convert an existing Compose app into a Docker App project (added later in the beta process).
The first scenario describes basic components of a Docker App with tools and workflow.
## Initialize and deploy a new Docker App project from scratch
This section describes the steps for creating a new Docker App project to familiarize you with the workflow and most important commands.
1. Prerequisites
2. Initialize an empty new project
3. Populate the project
4. Validate the app
5. Deploy the app
6. Push the app to Docker Hub
7. Install the app directly from Docker Hub
### Prerequisites
You need at least one Docker node operating in Swarm mode. You also need the latest build of the Docker CLI
with the App CLI plugin included.
Depending on your Linux distribution and your security context, you might need to prepend commands with `sudo`.
### Initialize a new empty project
The `docker app init` command is used to initialize a new Docker application project. If you run it on
its own, it initializes a new empty project. If you point it to an existing `docker-compose.yml` file,
it initializes a new project based on the Compose file.
Use the following command to initialize a new empty project called "hello-world".
```console
$ docker app init hello-world
Created "hello-world.dockerapp"
```
The command produces a new directory containing three YAML files. The name of the directory is the name of the
project with `.dockerapp` appended, and the three YAML files are:
- `docker-compose.yml`
- `metadata.yml`
- `parameters.yml`
Inspect the YAML files with the following commands.
```console
$ cd hello-world.dockerapp/
$ cat docker-compose.yml
version: "3.6"
services: {}
$ cat metadata.yml
version: 0.1.0
name: hello-world
description:
$ cat parameters.yml
```
Your files might be more verbose.
Let's quickly describe each file.
`docker-compose.yml` describes the application.
`metadata.yml` specifies identification metadata such as name, version, description and maintainers. It accepts
key-value pairs.
`parameters.yml` specifies default values for application parameters.
### Populate the project
This section describes editing the project YAML files so that it runs a simple web app.
Use your preferred editor to edit the `docker-compose.yml` YAML file and update it with
the following information:
```yaml
version: "3.6"
services:
hello:
image: hashicorp/http-echo
command: ["-text", "${hello.text}"]
ports:
- "${hello.port}:5678"
```
Update the `parameters.yml` file to the following:
```yaml
hello:
port: 8080
text: Hello world!
```
Save the changes.
The application is updated to run a single-container application based on the `hashicorp/http-echo` web server image.
This image has it execute a single command that displays some text and exposes itself on a network port.
Following best practices, the configuration of the application is decoupled from the application itself using variables.
In this case, the text displayed by the app and the port on which it will be published are controlled by two variables defined in the `Parameters` section of the file.
Docker App provides the `inspect` subcommand to provide a prettified summary of the application configuration.
It is a quick way to check how to configure the application before deployment, without having to read
the `Compose file`. It's important to note that the application is not running at this point, and that
the `inspect` operation inspects the configuration file(s).
```console
$ docker app inspect hello-world.dockerapp
hello-world 0.1.0
Service (1) Replicas Ports Image
----------- -------- ----- -----
hello 1 8080 hashicorp/http-echo
Parameters (2) Value
-------------- -----
hello.port 8080
hello.text Hello world!
```
`docker app inspect` operations fail if the `Parameters` section doesn't specify a default value for
every parameter expressed in the app section.
The application is ready to be validated and rendered.
### Validate the app
Docker App provides the `validate` subcommand to check syntax and other aspects of the configuration.
If the app passes validation, the command returns no arguments.
```console
$ docker app validate hello-world.dockerapp
Validated "hello-world.dockerapp"
```
`docker app validate` operations fail if the `Parameters` section doesn't specify a default value for
every parameter expressed in the app section.
As the `validate` operation has returned no problems, the app is ready to be deployed.
### Deploy the app
There are several options for deploying a Docker App project.
- Deploy as a native Docker App application
- Deploy as a Compose app application
- Deploy as a Docker Stack application
All three options are discussed, starting with deploying as a native Docker App application.
#### Deploy as a native Docker App
The process for deploying as a native Docker app is as follows:
Use `docker app install` to deploy the application.
Use the following command to deploy (install) the application.
```console
$ docker app install hello-world.dockerapp --name my-app
Creating network my-app_default
Creating service my-app_hello
Application "my-app" installed on context "default"
```
By default, `docker app` uses the [current context](/engine/context/working-with-contexts) to run the
installation container and as a target context to deploy the application. You can override the second context
using the flag `--target-context` or by using the environment variable `DOCKER_TARGET_CONTEXT`. This flag is also
available for the commands `status`, `upgrade`, and `uninstall`.
```console
$ docker app install hello-world.dockerapp --name my-app --target-context=my-big-production-cluster
Creating network my-app_default
Creating service my-app_hello
Application "my-app" installed on context "my-big-production-cluster"
```
> **Note**: Two applications deployed on the same target context cannot share the same name, but this is
valid if they are deployed on different target contexts.
You can check the status of the app with the `docker app status <app-name>` command.
```console
$ docker app status my-app
INSTALLATION
------------
Name: my-app
Created: 35 seconds
Modified: 31 seconds
Revision: 01DCMY7MWW67AY03B029QATXFF
Last Action: install
Result: SUCCESS
Orchestrator: swarm
APPLICATION
-----------
Name: hello-world
Version: 0.1.0
Reference:
PARAMETERS
----------
hello.port: 8080
hello.text: Hello, World!
STATUS
------
ID NAME MODE REPLICAS IMAGE PORTS
miqdk1v7j3zk my-app_hello replicated 1/1 hashicorp/http-echo:latest *:8080->5678/tcp
```
The app is deployed using the stack orchestrator. This means you can also inspect it using the regular `docker stack` commands.
```console
$ docker stack ls
NAME SERVICES ORCHESTRATOR
my-app 1 Swarm
```
Now that the app is running, you can point a web browser at the DNS name or public IP of the Docker node on
port 8080 and see the app. You must ensure traffic to port 8080 is allowed on
the connection from your browser to your Docker host.
Now change the port of the application using `docker app upgrade <app-name>` command.
```console
$ docker app upgrade my-app --set hello.port=8181
Upgrading service my-app_hello
Application "my-app" upgraded on context "default"
```
You can uninstall the app with `docker app uninstall my-app`.
#### Deploy as a Docker Compose app
The process for deploying as a Compose app comprises two major steps:
1. Render the Docker app project as a `docker-compose.yml` file.
2. Deploy the app using `docker-compose up`.
You need a recent version of Docker Compose to complete these steps.
Rendering is the process of reading the entire application configuration and outputting it as a single `docker-compose.yml` file. This creates a Compose file with hard-coded values wherever a parameter was specified as a variable.
Use the following command to render the app to a Compose file called `docker-compose.yml` in the current directory.
```console
$ docker app render --output docker-compose.yml hello-world.dockerapp
```
Check the contents of the resulting `docker-compose.yml` file.
```console
$ cat docker-compose.yml
version: "3.6"
services:
hello:
command:
- -text
- Hello world!
image: hashicorp/http-echo
ports:
- mode: ingress
target: 5678
published: 8080
protocol: tcp
```
Notice that the file contains hard-coded values that were expanded based on the contents of the `Parameters`
section of the project's YAML file. For example, `${hello.text}` has been expanded to "Hello world!".
> **Note**: Almost all the `docker app` commands propose the `--set key=value` flag to override a default parameter.
Try to render the application with a different text:
```console
$ docker app render hello-world.dockerapp --set hello.text="Hello whales!"
version: "3.6"
services:
hello:
command:
- -text
- Hello whales!
image: hashicorp/http-echo
ports:
- mode: ingress
target: 5678
published: 8080
protocol: tcp
```
Use `docker-compose up` to deploy the app.
```console
$ docker-compose up --detach
WARNING: The Docker Engine you're using is running in swarm mode.
<Snip>
```
The application is now running as a Docker Compose app and should be reachable on port `8080` on your Docker host.
You must ensure traffic to port `8080` is allowed on the connection form your browser to your Docker host.
You can use `docker-compose down` to stop and remove the application.
#### Deploy as a Docker Stack
Deploying the app as a Docker stack is a two-step process very similar to deploying it as a Docker Compose app.
1. Render the Docker app project as a `docker-compose.yml` file.
2. Deploy the app using `docker stack deploy`.
Complete the steps in the previous section to render the Docker app project as a Compose file and make sure
you're ready to deploy it as a Docker Stack. Your Docker host must be in Swarm mode.
```console
$ docker stack deploy hello-world-app -c docker-compose.yml
Creating network hello-world-app_default
Creating service hello-world-app_hello
```
The app is now deployed as a Docker stack and can be reached on port `8080` on your Docker host.
Use the `docker stack rm hello-world-app` command to stop and remove the stack. You must ensure traffic to
port `8080` is allowed on the connection form your browser to your Docker host.
### Push the app to Docker Hub
As mentioned in the introduction, `docker app` lets you manage entire
applications the same way that you currently manage container images. For
example, you can push and pull entire applications from registries like Docker
Hub with `docker app push` and `docker app pull`. Other `docker app` commands,
such as `install`, `upgrade`, `inspect`, and `render` can be performed directly
on applications while they are stored in a registry.
Push the application to Docker Hub. To complete this step, you need a valid
Docker ID and you must be logged in to the registry to which you are pushing
the app.
By default, all platform architectures are pushed to the registry. If you are
pushing an official Docker image as part of your app, you may find your app
bundle becomes large with all image architectures embedded. To just push the
architecture required, you can add the `--platform` flag.
```console
$ docker login
$ docker app push my-app --platform="linux/amd64" --tag <hub-id>/<repo>:0.1.0
```
### Install the app directly from Docker Hub
Now that the app is pushed to the registry, try an `inspect` and `install` command against it.
The location of your app is different from the one provided in the examples.
```console
$ docker app inspect myuser/hello-world:0.1.0
hello-world 0.1.0
Service (1) Replicas Ports Image
----------- -------- ----- -----
hello 1 8080 myuser/hello-world@sha256:ba27d460cd1f22a1a4331bdf74f4fccbc025552357e8a3249c40ae216275de96
Parameters (2) Value
-------------- -----
hello.port 8080
hello.text Hello world!
```
This action was performed directly against the app in the registry.
Now install it as a native Docker App by referencing the app in the registry, with a different port.
```console
$ docker app install myuser/hello-world:0.1.0 --set hello.port=8181
Creating network hello-world_default
Creating service hello-world_hello
Application "hello-world" installed on context "default"
```
Test that the app is working.
The app used in these examples is a simple web server that displays the text "Hello world!" on port 8181,
your app might be different.
```console
$ curl http://localhost:8181
Hello world!
```
Uninstall the app.
```console
$ docker app uninstall hello-world
Removing service hello-world_hello
Removing network hello-world_default
Application "hello-world" uninstalled on context "default"
```
You can see the name of your Docker App with the `docker stack ls` command.

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_bundle
title: docker app bundle
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_completion
title: docker app completion
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_init
title: docker app init
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_inspect
title: docker app inspect
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_install
title: docker app install
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_list
title: docker app list
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_pull
title: docker app pull
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_push
title: docker app push
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_render
title: docker app render
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_status
title: docker app status
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_uninstall
title: docker app uninstall
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_upgrade
title: docker app upgrade
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_validate
title: docker app validate
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -1,13 +0,0 @@
---
datafolder: docker-app
datafile: docker_app_version
title: docker app version
---
<!--
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 or pull request
in the source repository on GitHub:
https://github.com/docker/app
-->
{% include cli.md datafolder=page.datafolder datafile=page.datafile %}

View File

@ -2,6 +2,27 @@
title: Reference documentation
description: This section includes the reference documentation for the Docker platforms various APIs, CLIs, and file formats.
notoc: true
redirect_from:
- /app/working-with-app/
- /engine/reference/commandline/app/
- /engine/reference/commandline/app_bundle/
- /engine/reference/commandline/app_completion/
- /engine/reference/commandline/app_init/
- /engine/reference/commandline/app_inspect/
- /engine/reference/commandline/app_install/
- /engine/reference/commandline/app_list/
- /engine/reference/commandline/app_merge/
- /engine/reference/commandline/app_pull/
- /engine/reference/commandline/app_push/
- /engine/reference/commandline/app_render/
- /engine/reference/commandline/app_split/
- /engine/reference/commandline/app_status/
- /engine/reference/commandline/app_uninstall/
- /engine/reference/commandline/app_upgrade/
- /engine/reference/commandline/app_validate/
- /engine/reference/commandline/app_validate/
- /engine/reference/commandline/app_version/
---
This section includes the reference documentation for the Docker platform's