Skip to content

feat(docker): Add stream_progress_to parameter to DockerImage#21121

Open
wavebyrd wants to merge 9436 commits intoPrefectHQ:mainfrom
wavebyrd:fix/stream-docker-build-output
Open

feat(docker): Add stream_progress_to parameter to DockerImage#21121
wavebyrd wants to merge 9436 commits intoPrefectHQ:mainfrom
wavebyrd:fix/stream-docker-build-output

Conversation

@wavebyrd
Copy link

Summary

  • Adds stream_progress_to parameter to DockerImage class
  • Allows users to stream docker build and push output to stdout or any other TextIO stream
  • By default, output is suppressed (existing behavior unchanged)

Changes

  • Added stream_progress_to: Optional[TextIO] parameter to DockerImage.__init__
  • Pass it through to build_image() which already supports streaming
  • Added streaming support to push() method as well
  • Updated docstring to document the new parameter

Example usage

import sys
from prefect.docker import DockerImage

# Stream build and push output to stdout
image = DockerImage(name="my-image", stream_progress_to=sys.stdout)
image.build()  # Build output will be streamed to stdout
image.push()   # Push output will be streamed to stdout

Test plan

  • Create a DockerImage with stream_progress_to=sys.stdout and verify build output is streamed
  • Create a DockerImage without stream_progress_to and verify output is suppressed (default)
  • Verify push output streaming works correctly

Closes #18393

🤖 Generated with Claude Code

devin-ai-integration bot and others added 30 commits February 17, 2026 12:25
…efectHQ#20718)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…#20716)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…#20720)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…20673)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…Q#20721)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…fectHQ#20692)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Nate Nowack <nate@prefect.io>
…refectHQ#20725)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…#20671)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…age E2E tests (PrefectHQ#20726)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…0727)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
Co-authored-by: Pablo Cabeza <pablo@prefect.io>
…ctHQ#20730)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…s (wave 4b) (PrefectHQ#20724)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…refectHQ#20653)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
… link E2E tests (PrefectHQ#20737)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…` field for programmatic resume (PrefectHQ#20741)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ctHQ#20701)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…opts (wave 5a) (PrefectHQ#20740)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… (wave 5b) (PrefectHQ#20745)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…fectHQ#20744)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Nate Nowack <nate@prefect.io>
…ave 6a) (PrefectHQ#20749)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…trator` (PrefectHQ#20757)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
…Q#20763)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…#20761)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
desertaxle and others added 21 commits March 11, 2026 08:45
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…refectHQ#21086)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Nate Nowack <nate@prefect.io>
…21085)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Alexander Streed <alexander.streed@prefect.io>
Co-authored-by: alex.s <ajstreed1@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…1090)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s <alex.s@prefect.io>
Co-authored-by: alex.s <ajstreed1@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex.s <alex.s@prefect.io>
Co-authored-by: alex.s <ajstreed1@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bot_apk <apk@cognition.ai>
This allows users to stream docker build and push output to stdout
or any other TextIO stream. By default, output is suppressed, but
users can pass sys.stdout to see the build progress.

Example usage:
    image = DockerImage(name="my-image", stream_progress_to=sys.stdout)
    image.build()  # Build output will be streamed to stdout
    image.push()   # Push output will be streamed to stdout

Closes PrefectHQ#18393

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions github-actions bot added enhancement An improvement of an existing feature upstream dependency An upstream issue caused by a bug in one of our dependencies migration labels Mar 13, 2026
Copy link
Member

@desertaxle desertaxle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wavebyrd please rebase this PR so that it includes only the changes described in the PR description.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement An improvement of an existing feature migration upstream dependency An upstream issue caused by a bug in one of our dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stream docker build to stdout