Deploying an application package

Deploying an application package

Docker Enterprise 2.1 introduces application packages in Docker. With application packages, you can add metadata and settings to an existing Compose file. This gives operators more context about applications that they deploy and manage.

Application packages can present in one of two different formats, Directory or Single-file.

  • Directory: Defined by metadata.yml, a docker-compose.yml, and a settings.yml files inside a my-app.dockerapp folder. This is also called the folder format.
  • Single-file: Defined by metadata.yml, docker-compose.yml, and settings.yml concatenated in that order and separated by ---\n in a single file named named my-app.dockerapp.

Once an application package has been deployed, you manipulate and manage it as you would any stack.

Creating a stack in the MKE web UI

  1. Access the MKE web UI.
  2. From the left menu, select Shared Resources > Stacks.
  3. Click Create Stack to open the Create Application window. The 1. Configure Application section will become active.
  4. Enter a name for the stack in the Name field.
  5. Click to indicate the Orchestrator Mode, either Swarm Services or Kubernetes Workloads. Note that if you select Kubernetes Workloads, the Namespace drop-down list will display, from which you must select one of the namespaces offered.
  6. Click to indicate the Application File Mode, either Compose File or App Package.
  7. Click Next to open the 2. Add Application File section.
  8. Add the application file, according to the Application File Mode selected in section 1.
    • Compose File: Enter or upload the docker-compose.yml file.
    • App Package: Enter or upload the application package in the single-file format.
  9. Select Create.

Single-file application package example

version: 0.1.0
name: hello-world
description: "Hello, World!"
namespace: myHubUsername
maintainers:
  - name: user
    email: "user@email.com"
---
version: "3.6"
services:
  hello:
    image: hashicorp/http-echo
    command: ["-text", "${text}"]
    ports:
      - ${port}:5678

---
port: 8080
text: Hello, World!