docker / docker/compose

publish: parallelize image copy and add phase observability for --app

Open
#13,658 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

kind/feature status/0-triage
Dominant language
Go
Stars
38.2k
Forks
5.8k
Avg merge
2d 14h
Merged PRs (30d)
55

Description

Description

Two related improvements to docker compose publish when using --app:

1. Parallel + deduplicated image copy

Currently oci.Copy is called serially per service. On large stacks this is slow,
and services sharing the same image trigger duplicate copies.

Proposed: dedupe by normalized image reference, then copy concurrently with bounded
parallelism (default 4), sorting descriptors deterministically after completion.

2. Phase observability

Currently publish only emits "publishing" / "published" events. When it fails,
there's no visibility into which phase failed or how long each phase took.

Proposed: emit structured events per phase (prechecks, push-images, create-layers,
push-manifest, copy-images, push-index) with elapsed time and counts.

Does this approach make sense?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin at the docker compose publish --app entry point and the oci.Copy call sites; trace the existing publish phases and event emission before deciding where the proposed boundaries fit. Done means image references are deduplicated and copied with bounded concurrency, descriptors are deterministic, and each listed phase reports elapsed time and counts.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
cli, devops
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.