Skip to content

RFC: publish a compose application on registry #288

@ndeloof

Description

@ndeloof

What is the problem you're trying to solve
On can easily push all images involves in a Compose application, but still need to find another way to share the compose.yaml definition.

I suggest we define a mechanism and media type to push a compose.yaml file to a registry, in addition to images, with adequate OCI references

Describe the solution you'd like
Push Compose application as an OCI artifact.
We would use:

  • application/vnd.docker.compose.application media type for the whole compose application
  • application/vnd.docker.compose.config+yaml media type for the compose.yaml model
  • OCI or Docker manifest media type for referenced images
{
   "schemaVersion": 2,
  "mediaType": "application/vnd.oci.artifact.manifest.v1+json",
  "artifactType": "application/vnd.docker.compose.application",
   "blobs": [
      {
		"mediaType": "application/vnd.docker.compose.config+yaml",
		"digest": "sha256:.."
		"size": 123,
	  },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "digest": "sha256:.",
         "size": 123,
      },

Mechanism to push/pull such a manifest is our of the scope of the compose-specification, but for illustration this could result into something like this:

$ docker compose push --application registry/foo/bar
[+] Running 3/3
 ⠼ Pushing foo: xxxx Layer already exists                                                                         2.4s
 ⠸ Pushing compose.yaml: xxxx                                                                                         2.4s
 ⠸ Pushing compose application: xxxx                                                                              2.4s

$ docker compose --application registry/foo/bar  up 
...

Additional context
This somehow resurrects the main concept of Docker App

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions