Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package docker-compose for openSUSE:Factory checked in at 2025-06-23 15:00:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker-compose (Old) and /work/SRC/openSUSE:Factory/.docker-compose.new.7067 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose" Mon Jun 23 15:00:36 2025 rev:70 rq:1287267 version:2.37.2 Changes: -------- --- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2025-06-13 18:45:56.476031900 +0200 +++ /work/SRC/openSUSE:Factory/.docker-compose.new.7067/docker-compose.changes 2025-06-23 15:00:40.162288451 +0200 @@ -1,0 +2,17 @@ +Fri Jun 20 14:03:10 UTC 2025 - Johannes Kastl <[email protected]> + +- Update to version 2.37.2: + * Improvements + - introduce use_api_socket by @ndeloof in #12908 + * Fixes + - restore ContainerName in images --json by @ndeloof in #12943 + - fix panic using w shortcut on project without watch support + by @ndeloof in #12944 + * Internal + - move run logic inside backend by @ndeloof in #12908 + * Dependencies + - bump compose-go to v2.6.5 by @ndeloof in #12958 + - build(deps): bump github.com/containerd/containerd/v2 from + 2.1.1 to 2.1.2 by @dependabot in #12939 + +------------------------------------------------------------------- Old: ---- docker-compose-2.37.1.obscpio New: ---- docker-compose-2.37.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker-compose.spec ++++++ --- /var/tmp/diff_new_pack.0A2orm/_old 2025-06-23 15:00:41.034324904 +0200 +++ /var/tmp/diff_new_pack.0A2orm/_new 2025-06-23 15:00:41.034324904 +0200 @@ -17,7 +17,7 @@ Name: docker-compose -Version: 2.37.1 +Version: 2.37.2 Release: 0 Summary: Define and run multi-container applications with Docker License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.0A2orm/_old 2025-06-23 15:00:41.066326242 +0200 +++ /var/tmp/diff_new_pack.0A2orm/_new 2025-06-23 15:00:41.070326409 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/docker/compose</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.37.1</param> + <param name="revision">v2.37.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.0A2orm/_old 2025-06-23 15:00:41.090327245 +0200 +++ /var/tmp/diff_new_pack.0A2orm/_new 2025-06-23 15:00:41.094327413 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/docker/compose</param> - <param name="changesrevision">343117233b901110b464786a4daccc264babb56b</param></service></servicedata> + <param name="changesrevision">f7825a56bf4e430024dfce48b1f3f332c2fd3d85</param></service></servicedata> (No newline at EOF) ++++++ docker-compose-2.37.1.obscpio -> docker-compose-2.37.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.gitattributes new/docker-compose-2.37.2/.gitattributes --- old/docker-compose-2.37.1/.gitattributes 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.gitattributes 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,2 @@ +core.autocrlf false +*.golden text eol=lf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/CODEOWNERS new/docker-compose-2.37.2/.github/CODEOWNERS --- old/docker-compose-2.37.1/.github/CODEOWNERS 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/CODEOWNERS 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,2 @@ +# global rules +* @docker/compose-maintainers \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/bug_report.yml new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/bug_report.yml --- old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/bug_report.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/bug_report.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,49 @@ +name: 🐞 Bug +description: File a bug/issue +title: "[BUG] <title>" +labels: ['status/0-triage', 'kind/bug'] +body: + - type: textarea + attributes: + label: Description + description: | + Briefly describe the problem you are having. + + Include both the current behavior (what you are seeing) as well as what you expected to happen. + validations: + required: true + - type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. In this environment... + 2. With this config... + 3. Run '...' + 4. See error... + validations: + required: false + - type: textarea + attributes: + label: Compose Version + description: | + Paste output of `docker compose version` and `docker-compose version`. + render: Text + validations: + required: false + - type: textarea + attributes: + label: Docker Environment + description: Paste output of `docker info`. + render: Text + validations: + required: false + - type: textarea + attributes: + label: Anything else? + description: | + Links? References? Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/config.yml new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/config.yml --- old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/config.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/config.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,11 @@ +blank_issues_enabled: true +contact_links: + - name: Docker Community Slack + url: https://dockr.ly/slack + about: 'Use the #docker-compose channel' + - name: Docker Support Forums + url: https://forums.docker.com/c/open-source-projects/compose/15 + about: 'Use the "Open Source Projects > Compose" category' + - name: 'Ask on Stack Overflow' + url: https://stackoverflow.com/questions/tagged/docker-compose + about: 'Use the [docker-compose] tag when creating new questions' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/feature_request.yaml new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/feature_request.yaml --- old/docker-compose-2.37.1/.github/ISSUE_TEMPLATE/feature_request.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/ISSUE_TEMPLATE/feature_request.yaml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,13 @@ +name: Feature request +description: Missing functionality? Come tell us about it! +labels: + - kind/feature + - status/0-triage +body: + - type: textarea + id: description + attributes: + label: Description + description: What is the feature you want to see? + validations: + required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/PULL_REQUEST_TEMPLATE.md new/docker-compose-2.37.2/.github/PULL_REQUEST_TEMPLATE.md --- old/docker-compose-2.37.1/.github/PULL_REQUEST_TEMPLATE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/PULL_REQUEST_TEMPLATE.md 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,6 @@ +**What I did** + +**Related issue** +<!-- If this is a bug fix, make sure your description includes "fixes #xxxx", or "closes #xxxx" --> + +**(not mandatory) A picture of a cute animal, if possible in relation to what you did** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/SECURITY.md new/docker-compose-2.37.2/.github/SECURITY.md --- old/docker-compose-2.37.1/.github/SECURITY.md 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/SECURITY.md 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,44 @@ +# Security Policy + +The maintainers of Docker Compose take security seriously. If you discover +a security issue, please bring it to their attention right away! + +## Reporting a Vulnerability + +Please **DO NOT** file a public issue, instead send your report privately +to [[email protected]](mailto:[email protected]). + +Reporter(s) can expect a response within 72 hours, acknowledging the issue was +received. + +## Review Process + +After receiving the report, an initial triage and technical analysis is +performed to confirm the report and determine its scope. We may request +additional information in this stage of the process. + +Once a reviewer has confirmed the relevance of the report, a draft security +advisory will be created on GitHub. The draft advisory will be used to discuss +the issue with maintainers, the reporter(s), and where applicable, other +affected parties under embargo. + +If the vulnerability is accepted, a timeline for developing a patch, public +disclosure, and patch release will be determined. If there is an embargo period +on public disclosure before the patch release, the reporter(s) are expected to +participate in the discussion of the timeline and abide by agreed upon dates +for public disclosure. + +## Accreditation + +Security reports are greatly appreciated and we will publicly thank you, +although we will keep your name confidential if you request it. We also like to +send gifts - if you're into swag, make sure to let us know. We do not currently +offer a paid security bounty program at this time. + +## Supported Versions + +This project docs not provide long-term supported versions, and only the current +release and `main` branch are actively maintained. Docker Compose v1, and the +corresponding [v1 branch](https://github.com/docker/compose/tree/v1) reached +EOL and are no longer supported. + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/dependabot.yml new/docker-compose-2.37.2/.github/dependabot.yml --- old/docker-compose-2.37.1/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/dependabot.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,23 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: / + schedule: + interval: daily + ignore: + # docker + moby deps require coordination + - dependency-name: "github.com/docker/buildx" + # buildx is still 0.x + update-types: ["version-update:semver-minor"] + - dependency-name: "github.com/moby/buildkit" + # buildkit is still 0.x + update-types: [ "version-update:semver-minor" ] + - dependency-name: "github.com/docker/cli" + update-types: ["version-update:semver-major"] + - dependency-name: "github.com/docker/docker" + update-types: ["version-update:semver-major"] + - dependency-name: "github.com/containerd/containerd" + # containerd major/minor must be kept in sync with moby + update-types: [ "version-update:semver-major", "version-update:semver-minor" ] + # OTEL dependencies should be upgraded in sync with engine, cli, buildkit and buildx projects + - dependency-name: "go.opentelemetry.io/*" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/stale.yml new/docker-compose-2.37.2/.github/stale.yml --- old/docker-compose-2.37.1/.github/stale.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/stale.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,59 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 90 + +# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. +# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. +daysUntilClose: 7 + +# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) +onlyLabels: [] + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - "kind/feature" + +# Set to true to ignore issues in a project (defaults to false) +exemptProjects: false + +# Set to true to ignore issues in a milestone (defaults to false) +exemptMilestones: false + +# Set to true to ignore issues with an assignee (defaults to false) +exemptAssignees: true + +# Label to use when marking as stale +staleLabel: stale + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when removing the stale label. +unmarkComment: > + This issue has been automatically marked as not stale anymore due to the recent activity. + +# Comment to post when closing a stale Issue or Pull Request. +closeComment: > + This issue has been automatically closed because it had not recent activity during the stale period. + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 30 + +# Limit to only `issues` or `pulls` +only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/workflows/ci.yml new/docker-compose-2.37.2/.github/workflows/ci.yml --- old/docker-compose-2.37.1/.github/workflows/ci.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/workflows/ci.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,325 @@ +name: ci + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - 'main' + tags: + - 'v*' + pull_request: + workflow_dispatch: + inputs: + debug_enabled: + description: 'To run with tmate enter "debug_enabled"' + required: false + default: "false" + +permissions: + contents: read # to fetch code (actions/checkout) + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.platforms.outputs.matrix }} + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Create matrix + id: platforms + run: | + echo matrix=$(docker buildx bake binary-cross --print | jq -cr '.target."binary-cross".platforms') >> $GITHUB_OUTPUT + - + name: Show matrix + run: | + echo ${{ steps.platforms.outputs.matrix }} + + validate: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: + - lint + - validate-go-mod + - validate-headers + - validate-docs + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Run + run: | + make ${{ matrix.target }} + + binary: + runs-on: ubuntu-latest + needs: + - prepare + strategy: + fail-fast: false + matrix: + platform: ${{ fromJson(needs.prepare.outputs.matrix) }} + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Prepare + run: | + platform=${MATRIX_PLATFORM} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + env: + MATRIX_PLATFORM: ${{ matrix.platform }} + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build + uses: docker/bake-action@v6 + with: + source: . + targets: release + provenance: mode=max + sbom: true + set: | + *.platform=${{ matrix.platform }} + *.cache-from=type=gha,scope=binary-${{ env.PLATFORM_PAIR }} + *.cache-to=type=gha,scope=binary-${{ env.PLATFORM_PAIR }},mode=max + - + name: Rename provenance and sbom + working-directory: ./bin/release + run: | + binname=$(find . -name 'docker-compose-*') + filename=$(basename "$binname" | sed -E 's/\.exe$//') + mv "provenance.json" "${filename}.provenance.json" + mv "sbom-binary.spdx.json" "${filename}.sbom.json" + find . -name 'sbom*.json' -exec rm {} \; + - + name: List artifacts + run: | + tree -nh ./bin/release + - + name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: compose-${{ env.PLATFORM_PAIR }} + path: ./bin/release + if-no-files-found: error + + test: + runs-on: ubuntu-latest + steps: + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Test + uses: docker/bake-action@v6 + with: + targets: test + set: | + *.cache-from=type=gha,scope=test + *.cache-to=type=gha,scope=test + - + name: Gather coverage data + uses: actions/upload-artifact@v4 + with: + name: coverage-data-unit + path: bin/coverage/unit/ + if-no-files-found: error + - + name: Unit Test Summary + uses: test-summary/action@v2 + with: + paths: bin/coverage/unit/report.xml + if: always() + e2e: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + mode: + - plugin + - standalone + engine: + - 26 + - 27 + - 28 + steps: + - name: Prepare + run: | + mode=${{ matrix.mode }} + engine=${{ matrix.engine }} + echo "MODE_ENGINE_PAIR=${mode}-${engine}" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Docker ${{ matrix.engine }} + run: | + sudo systemctl stop docker.service + sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin + sudo apt-get install curl + curl -fsSL https://test.docker.com -o get-docker.sh + sudo sh ./get-docker.sh --version ${{ matrix.engine }} + + - name: Check Docker Version + run: docker --version + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + check-latest: true + cache: true + + - name: Build + uses: docker/bake-action@v6 + with: + source: . + targets: binary-with-coverage + set: | + *.cache-from=type=gha,scope=binary-linux-amd64 + *.cache-from=type=gha,scope=binary-e2e-${{ matrix.mode }} + *.cache-to=type=gha,scope=binary-e2e-${{ matrix.mode }},mode=max + env: + BUILD_TAGS: e2e + + - name: Setup tmate session + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }} + uses: mxschmitt/action-tmate@8b4e4ac71822ed7e0ad5fb3d1c33483e9e8fb270 # v3.11 + with: + limit-access-to-actor: true + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Test plugin mode + if: ${{ matrix.mode == 'plugin' }} + run: | + rm -rf ./bin/coverage/e2e + mkdir -p ./bin/coverage/e2e + make e2e-compose GOCOVERDIR=bin/coverage/e2e TEST_FLAGS="-v" + + - name: Gather coverage data + if: ${{ matrix.mode == 'plugin' }} + uses: actions/upload-artifact@v4 + with: + name: coverage-data-e2e-${{ env.MODE_ENGINE_PAIR }} + path: bin/coverage/e2e/ + if-no-files-found: error + + - name: Test standalone mode + if: ${{ matrix.mode == 'standalone' }} + run: | + rm -f /usr/local/bin/docker-compose + cp bin/build/docker-compose /usr/local/bin + make e2e-compose-standalone + + - name: e2e Test Summary + uses: test-summary/action@v2 + with: + paths: /tmp/report/report.xml + if: always() + coverage: + runs-on: ubuntu-latest + needs: + - test + - e2e + steps: + # codecov won't process the report without the source code available + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + check-latest: true + - name: Download unit test coverage + uses: actions/download-artifact@v4 + with: + name: coverage-data-unit + path: coverage/unit + merge-multiple: true + - name: Download E2E test coverage + uses: actions/download-artifact@v4 + with: + pattern: coverage-data-e2e-* + path: coverage/e2e + merge-multiple: true + - name: Merge coverage reports + run: | + go tool covdata textfmt -i=./coverage/unit,./coverage/e2e -o ./coverage.txt + - name: Store coverage report in GitHub Actions + uses: actions/upload-artifact@v4 + with: + name: go-covdata-txt + path: ./coverage.txt + if-no-files-found: error + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./coverage.txt + + release: + permissions: + contents: write # to create a release (ncipollo/release-action) + + runs-on: ubuntu-latest + needs: + - binary + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Download artifacts + uses: actions/download-artifact@v4 + with: + pattern: compose-* + path: ./bin/release + merge-multiple: true + - + name: Create checksums + working-directory: ./bin/release + run: | + find . -type f -print0 | sort -z | xargs -r0 shasum -a 256 -b | sed 's# \*\./# *#' > $RUNNER_TEMP/checksums.txt + shasum -a 256 -U -c $RUNNER_TEMP/checksums.txt + mv $RUNNER_TEMP/checksums.txt . + cat checksums.txt | while read sum file; do + if [[ "${file#\*}" == docker-compose-* && "${file#\*}" != *.provenance.json && "${file#\*}" != *.sbom.json ]]; then + echo "$sum $file" > ${file#\*}.sha256 + fi + done + - + name: List artifacts + run: | + tree -nh ./bin/release + - + name: Check artifacts + run: | + find bin/release -type f -exec file -e ascii -- {} + + - + name: GitHub Release + if: startsWith(github.ref, 'refs/tags/v') + uses: ncipollo/release-action@58ae73b360456532aafd58ee170c045abbeaee37 # v1.10.0 + with: + artifacts: ./bin/release/* + generateReleaseNotes: true + draft: true + token: ${{ secrets.GITHUB_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/workflows/docs-upstream.yml new/docker-compose-2.37.2/.github/workflows/docs-upstream.yml --- old/docker-compose-2.37.1/.github/workflows/docs-upstream.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/workflows/docs-upstream.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,51 @@ +# this workflow runs the remote validate bake target from docker/docs +# to check if yaml reference docs used in this repo are valid +name: docs-upstream + +# Default to 'contents: read', which grants actions to read commits. +# +# If any permission is set, any permission not included in the list is +# implicitly set to "none". +# +# see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - 'main' + - 'v[0-9]*' + paths: + - '.github/workflows/docs-upstream.yml' + - 'docs/**' + pull_request: + paths: + - '.github/workflows/docs-upstream.yml' + - 'docs/**' + +jobs: + docs-yaml: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Upload reference YAML docs + uses: actions/upload-artifact@v4 + with: + name: docs-yaml + path: docs/reference + retention-days: 1 + + validate: + uses: docker/docs/.github/workflows/validate-upstream.yml@main + needs: + - docs-yaml + with: + module-name: docker/compose diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/workflows/merge.yml new/docker-compose-2.37.2/.github/workflows/merge.yml --- old/docker-compose-2.37.1/.github/workflows/merge.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/workflows/merge.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,163 @@ +name: merge + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - 'main' + tags: + - 'v*' + +permissions: + contents: read # to fetch code (actions/checkout) + +env: + REPO_SLUG: "docker/compose-bin" + +jobs: + e2e: + name: Build and test + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [desktop-windows, desktop-macos, desktop-m1] + # mode: [plugin, standalone] + mode: [plugin] + env: + GO111MODULE: "on" + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + cache: true + check-latest: true + + - name: List Docker resources on machine + run: | + docker ps --all + docker volume ls + docker network ls + docker image ls + - name: Remove Docker resources on machine + continue-on-error: true + run: | + docker kill $(docker ps -q) + docker rm -f $(docker ps -aq) + docker volume rm -f $(docker volume ls -q) + docker ps --all + + - name: Unit tests + run: make test + + - name: Build binaries + run: | + make + - name: Check arch of go compose binary + run: | + file ./bin/build/docker-compose + if: ${{ !contains(matrix.os, 'desktop-windows') }} + - + name: Test plugin mode + if: ${{ matrix.mode == 'plugin' }} + run: | + make e2e-compose + - + name: Test standalone mode + if: ${{ matrix.mode == 'standalone' }} + run: | + make e2e-compose-standalone + + bin-image: + runs-on: ubuntu-22.04 + outputs: + digest: ${{ fromJSON(steps.bake.outputs.metadata).image-cross['containerimage.digest'] }} + steps: + - + name: Free disk space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + android: true + dotnet: true + haskell: true + large-packages: true + swap-storage: true + - + name: Checkout + uses: actions/checkout@v4 + - + name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }} + password: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }} + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.REPO_SLUG }} + tags: | + type=ref,event=tag + type=edge + bake-target: meta-helper + - + name: Build and push image + uses: docker/bake-action@v6 + id: bake + with: + source: . + files: | + ./docker-bake.hcl + ${{ steps.meta.outputs.bake-file }} + targets: image-cross + push: ${{ github.event_name != 'pull_request' }} + sbom: true + provenance: mode=max + set: | + *.cache-from=type=gha,scope=bin-image + *.cache-to=type=gha,scope=bin-image,mode=max + + desktop-edge-test: + runs-on: ubuntu-latest + needs: bin-image + steps: + - + name: Generate Token + id: generate_token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ vars.DOCKERDESKTOP_APP_ID }} + private-key: ${{ secrets.DOCKERDESKTOP_APP_PRIVATEKEY }} + owner: docker + repositories: | + ${{ secrets.DOCKERDESKTOP_REPO }} + - + name: Trigger Docker Desktop e2e with edge version + uses: actions/github-script@v7 + with: + github-token: ${{ steps.generate_token.outputs.token }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'docker', + repo: '${{ secrets.DOCKERDESKTOP_REPO }}', + workflow_id: 'compose-edge-integration.yml', + ref: 'main', + inputs: { + "image-tag": "${{ needs.bin-image.outputs.digest }}" + } + }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/workflows/scorecards.yml new/docker-compose-2.37.2/.github/workflows/scorecards.yml --- old/docker-compose-2.37.1/.github/workflows/scorecards.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/workflows/scorecards.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,63 @@ +name: Scorecards supply-chain security +on: + # Only the default branch is supported. + branch_protection_rule: + schedule: + - cron: '44 9 * * 4' + push: + branches: [ "main" ] + +jobs: + analysis: + name: Scorecards analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Used to receive a badge. + id-token: write + # read permissions to all the other objects + actions: read + attestations: read + checks: read + contents: read + deployments: read + issues: read + discussions: read + packages: read + pages: read + pull-requests: read + statuses: read + + steps: + - name: "Checkout code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.4.2 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # tag=v2.4.0 + with: + results_file: results.sarif + results_format: sarif + + # Publish the results for public repositories to enable scorecard badges. For more details, see + # https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories, `publish_results` will automatically be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # tag=v4.5.0 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@3096afedf9873361b2b2f65e1445b13272c83eb8 # tag=v2.20.00 + with: + sarif_file: results.sarif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.github/workflows/stale.yml new/docker-compose-2.37.2/.github/workflows/stale.yml --- old/docker-compose-2.37.1/.github/workflows/stale.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.github/workflows/stale.yml 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,33 @@ +name: 'Close stale issues' + +# Default to 'contents: read', which grants actions to read commits. +# +# If any permission is set, any permission not included in the list is +# implicitly set to "none". +# +# see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions +permissions: + contents: read + +on: + schedule: + - cron: '0 0 * * 0,3' # at midnight UTC every Sunday and Wednesday +jobs: + stale: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + days-before-issue-stale: 150 # marks stale after 5 months + days-before-issue-close: 30 # closes 1 month after being marked with no action + stale-issue-label: "stale" + exempt-issue-labels: "kind/feature,kind/enhancement" + \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/.gitignore new/docker-compose-2.37.2/.gitignore --- old/docker-compose-2.37.1/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/.gitignore 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,5 @@ +bin/ +/.vscode/ +coverage.out +covdatafiles/ +.DS_Store diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/cmd/compose/images.go new/docker-compose-2.37.2/cmd/compose/images.go --- old/docker-compose-2.37.1/cmd/compose/images.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/cmd/compose/images.go 2025-06-20 15:16:51.000000000 +0200 @@ -88,12 +88,35 @@ return nil } if opts.Format == "json" { + + type img struct { + ID string `json:"ID"` + ContainerName string `json:"ContainerName"` + Repository string `json:"Repository"` + Tag string `json:"Tag"` + Platform string `json:"Platform"` + Size int64 `json:"Size"` + LastTagTime time.Time `json:"LastTagTime"` + } // Convert map to slice - var imageList []api.ImageSummary - for _, img := range images { - imageList = append(imageList, img) + var imageList []img + for ctr, i := range images { + imageList = append(imageList, img{ + ContainerName: ctr, + ID: i.ID, + Repository: i.Repository, + Tag: i.Tag, + Platform: platforms.Format(i.Platform), + Size: i.Size, + LastTagTime: i.LastTagTime, + }) + } + json, err := formatter.ToJSON(imageList, "", "") + if err != nil { + return err } - return formatter.Print(imageList, opts.Format, dockerCli.Out(), nil) + _, err = fmt.Fprintln(dockerCli.Out(), json) + return err } return formatter.Print(images, opts.Format, dockerCli.Out(), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/cmd/compose/run.go new/docker-compose-2.37.2/cmd/compose/run.go --- old/docker-compose-2.37.1/cmd/compose/run.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/cmd/compose/run.go 2025-06-20 15:16:51.000000000 +0200 @@ -271,22 +271,6 @@ return err } - err = progress.Run(ctx, func(ctx context.Context) error { - var buildForDeps *api.BuildOptions - if !createOpts.noBuild { - // allow dependencies needing build to be implicitly selected - bo, err := buildOpts.toAPIBuildOptions(nil) - if err != nil { - return err - } - buildForDeps = &bo - } - return startDependencies(ctx, backend, *project, buildForDeps, options) - }, dockerCli.Err()) - if err != nil { - return err - } - labels := types.Labels{} for _, s := range options.labels { parts := strings.SplitN(s, "=", 2) @@ -298,9 +282,7 @@ var buildForRun *api.BuildOptions if !createOpts.noBuild { - // dependencies have already been started above, so only the service - // being run might need to be built at this point - bo, err := buildOpts.toAPIBuildOptions([]string{options.Service}) + bo, err := buildOpts.toAPIBuildOptions(project.ServiceNames()) if err != nil { return err } @@ -314,7 +296,12 @@ // start container and attach to container streams runOpts := api.RunOptions{ - Build: buildForRun, + CreateOptions: api.CreateOptions{ + Build: buildForRun, + RemoveOrphans: options.removeOrphans, + IgnoreOrphans: options.ignoreOrphans, + QuietPull: options.quietPull, + }, Name: options.name, Service: options.Service, Command: options.Command, @@ -332,7 +319,6 @@ UseNetworkAliases: options.useAliases, NoDeps: options.noDeps, Index: 0, - QuietPull: options.quietPull, } for name, service := range project.Services { @@ -352,34 +338,3 @@ } return err } - -func startDependencies(ctx context.Context, backend api.Service, project types.Project, buildOpts *api.BuildOptions, options runOptions) error { - dependencies := types.Services{} - var requestedService types.ServiceConfig - for name, service := range project.Services { - if name != options.Service { - dependencies[name] = service - } else { - requestedService = service - } - } - - project.Services = dependencies - project.DisabledServices[options.Service] = requestedService - err := backend.Create(ctx, &project, api.CreateOptions{ - Build: buildOpts, - IgnoreOrphans: options.ignoreOrphans, - RemoveOrphans: options.removeOrphans, - QuietPull: options.quietPull, - }) - if err != nil { - return err - } - - if len(dependencies) > 0 { - return backend.Start(ctx, project.Name, api.StartOptions{ - Project: &project, - }) - } - return nil -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/cmd/formatter/shortcut.go new/docker-compose-2.37.2/cmd/formatter/shortcut.go --- old/docker-compose-2.37.1/cmd/formatter/shortcut.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/cmd/formatter/shortcut.go 2025-06-20 15:16:51.000000000 +0200 @@ -22,6 +22,7 @@ "fmt" "math" "os" + "reflect" "syscall" "time" @@ -69,8 +70,9 @@ } type KeyboardWatch struct { - Watching bool - Watcher Toggle + Watching bool + Watcher Toggle + IsConfigured bool } type Toggle interface { @@ -90,7 +92,6 @@ kError KeyboardError Watch KeyboardWatch IsDockerDesktopActive bool - IsWatchConfigured bool logLevel KEYBOARD_LOG_LEVEL signalChannel chan<- os.Signal } @@ -101,11 +102,11 @@ func NewKeyboardManager(isDockerDesktopActive bool, sc chan<- os.Signal, w bool, watcher Toggle) *LogKeyboard { KeyboardManager = &LogKeyboard{ Watch: KeyboardWatch{ - Watching: w, - Watcher: watcher, + Watching: w, + Watcher: watcher, + IsConfigured: !reflect.ValueOf(watcher).IsNil(), }, IsDockerDesktopActive: isDockerDesktopActive, - IsWatchConfigured: true, logLevel: INFO, signalChannel: sc, } @@ -267,7 +268,7 @@ } func (lk *LogKeyboard) ToggleWatch(ctx context.Context, options api.UpOptions) { - if !lk.IsWatchConfigured { + if !lk.Watch.IsConfigured { return } if lk.Watch.Watching { @@ -298,7 +299,7 @@ case 'v': lk.openDockerDesktop(ctx, project) case 'w': - if !lk.IsWatchConfigured { + if !lk.Watch.IsConfigured { // we try to open watch docs if DD is installed if lk.IsDockerDesktopActive { lk.openDDWatchDocs(ctx, project) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/go.mod new/docker-compose-2.37.2/go.mod --- old/docker-compose-2.37.1/go.mod 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/go.mod 2025-06-20 15:16:51.000000000 +0200 @@ -8,13 +8,13 @@ github.com/Microsoft/go-winio v0.6.2 github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d github.com/buger/goterm v1.0.4 - github.com/compose-spec/compose-go/v2 v2.6.4 - github.com/containerd/containerd/v2 v2.1.1 + github.com/compose-spec/compose-go/v2 v2.6.5 + github.com/containerd/containerd/v2 v2.1.2 github.com/containerd/errdefs v1.0.0 github.com/containerd/platforms v1.0.0-rc.1 github.com/davecgh/go-spew v1.1.1 github.com/distribution/reference v0.6.0 - github.com/docker/buildx v0.24.0 + github.com/docker/buildx v0.25.0 github.com/docker/cli v28.2.2+incompatible github.com/docker/cli-docs-tool v0.10.0 github.com/docker/docker v28.2.2+incompatible @@ -29,7 +29,7 @@ github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/go-ps v1.0.0 github.com/mitchellh/mapstructure v1.5.0 - github.com/moby/buildkit v0.22.0 + github.com/moby/buildkit v0.23.0 github.com/moby/go-archive v0.1.0 github.com/moby/patternmatcher v0.6.0 github.com/moby/sys/atomicwriter v0.1.0 @@ -82,7 +82,7 @@ github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/containerd/console v1.0.4 // indirect + github.com/containerd/console v1.0.5 // indirect github.com/containerd/containerd/api v1.9.0 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -117,7 +117,7 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/in-toto/in-toto-golang v0.5.0 // indirect + github.com/in-toto/in-toto-golang v0.9.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf // indirect github.com/josharian/intern v1.0.0 // indirect @@ -157,13 +157,14 @@ github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.6.0 // indirect github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/theupdateframework/notary v0.7.0 // indirect github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323 // indirect - github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144 // indirect - github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect + github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f // indirect + github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 // indirect github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // indirect github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab // indirect github.com/x448/float16 v0.8.4 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/go.sum new/docker-compose-2.37.2/go.sum --- old/docker-compose-2.37.1/go.sum 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/go.sum 2025-06-20 15:16:51.000000000 +0200 @@ -80,16 +80,16 @@ github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= -github.com/compose-spec/compose-go/v2 v2.6.4 h1:Gjv6x8eAhqwwWvoXIo0oZ4bDQBh0OMwdU7LUL9PDLiM= -github.com/compose-spec/compose-go/v2 v2.6.4/go.mod h1:vPlkN0i+0LjLf9rv52lodNMUTJF5YHVfHVGLLIP67NA= +github.com/compose-spec/compose-go/v2 v2.6.5 h1:H7xP5OMKdkN2p0brx01slxIU6dE/q6ybbG+jozPtIqk= +github.com/compose-spec/compose-go/v2 v2.6.5/go.mod h1:TmjkIB9W73fwVxkYY+u2uhMbMUakjiif79DlYgXsyvU= github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= -github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= -github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= +github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd/api v1.9.0 h1:HZ/licowTRazus+wt9fM6r/9BQO7S0vD5lMcWspGIg0= github.com/containerd/containerd/api v1.9.0/go.mod h1:GhghKFmTR3hNtyznBoQ0EMWr9ju5AqHjcZPsSpTKutI= -github.com/containerd/containerd/v2 v2.1.1 h1:znnkm7Ajz8lg8BcIPMhc/9yjBRN3B+OkNKqKisKfwwM= -github.com/containerd/containerd/v2 v2.1.1/go.mod h1:zIfkQj4RIodclYQkX7GSSswSwgP8d/XxDOtOAoSDIGU= +github.com/containerd/containerd/v2 v2.1.2 h1:4ZQxB+FVYmwXZgpBcKfar6ieppm3KC5C6FRKvtJ6DRU= +github.com/containerd/containerd/v2 v2.1.2/go.mod h1:8C5QV9djwsYDNhxfTCFjWtTBZrqjditQ4/ghHSYjnHM= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -100,8 +100,8 @@ github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/nydus-snapshotter v0.15.0 h1:RqZRs1GPeM6T3wmuxJV9u+2Rg4YETVMwTmiDeX+iWC8= -github.com/containerd/nydus-snapshotter v0.15.0/go.mod h1:biq0ijpeZe0I5yZFSJyHzFSjjRZQ7P7y/OuHyd7hYOw= +github.com/containerd/nydus-snapshotter v0.15.2 h1:qsHI4M+Wwrf6Jr4eBqhNx8qh+YU0dSiJ+WPmcLFWNcg= +github.com/containerd/nydus-snapshotter v0.15.2/go.mod h1:FfwH2KBkNYoisK/e+KsmNr7xTU53DmnavQHMFOcXwfM= github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= @@ -125,8 +125,10 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/buildx v0.24.0 h1:qiD+xktY+Fs3R79oz8M+7pbhip78qGLx6LBuVmyb+64= -github.com/docker/buildx v0.24.0/go.mod h1:vYkdBUBjFo/i5vUE0mkajGlk03gE0T/HaGXXhgIxo8E= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/docker/buildx v0.25.0 h1:qs5WxBo0wQKSXcQ+v6UhWaeM2Pu+95ZCymaimRzInaE= +github.com/docker/buildx v0.25.0/go.mod h1:xJcOeBhz49tgqN174MMGuOU4bxNmgfaLnZn7Gm641EE= github.com/docker/cli v28.2.2+incompatible h1:qzx5BNUDFqlvyq4AHzdNB7gSyVTmU4cgsyN9SdInc1A= github.com/docker/cli v28.2.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli-docs-tool v0.10.0 h1:bOD6mKynPQgojQi3s2jgcUWGp/Ebqy1SeCr9VfKQLLU= @@ -216,8 +218,8 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -243,8 +245,8 @@ github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= -github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE= +github.com/in-toto/in-toto-golang v0.9.0 h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU= +github.com/in-toto/in-toto-golang v0.9.0/go.mod h1:xsBVrVsHNsB61++S6Dy2vWosKhuA3lUTQd+eF9HdeMo= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -315,8 +317,8 @@ github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.22.0 h1:aWN06w1YGSVN1XfeZbj2ZbgY+zi5xDAjEFI8Cy9fTjA= -github.com/moby/buildkit v0.22.0/go.mod h1:j4pP5hxiTWcz7xuTK2cyxQislHl/N2WWHzOy43DlLJw= +github.com/moby/buildkit v0.23.0 h1:HV+u7xM2IZhAjVautFR2l5FNhkxFR0jhF5ILXyc3398= +github.com/moby/buildkit v0.23.0/go.mod h1:v5jMDvQgUyidk3wu3NvVAAd5JJo83nfet9Gf/o0+EAQ= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= @@ -423,8 +425,10 @@ github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= -github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/secure-systems-lab/go-securesystemslib v0.6.0 h1:T65atpAVCJQK14UA57LMdZGpHi4QYSH/9FZyNGqMYIA= +github.com/secure-systems-lab/go-securesystemslib v0.6.0/go.mod h1:8Mtpo9JKks/qhPG4HGZ2LGMvrPbzuxwfz/f/zLfEWkk= github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b h1:h+3JX2VoWTFuyQEo87pStk/a99dzIO1mM9KxIyLPGTU= github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= @@ -436,8 +440,8 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY= -github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= +github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk= +github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE= github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94 h1:JmfC365KywYwHB946TTiQWEb8kqPY+pybPLoGE9GgVk= github.com/spf13/cast v0.0.0-20150508191742-4d07383ffe94/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -472,10 +476,10 @@ github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375/go.mod h1:xRroudyp5iVtxKqZCrA6n2TLFRBf8bmnjr1UD4x+z7g= github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323 h1:r0p7fK56l8WPequOaR3i9LBqfPtEdXIQbUTzT55iqT4= github.com/tonistiigi/dchapes-mode v0.0.0-20250318174251-73d941a28323/go.mod h1:3Iuxbr0P7D3zUzBMAZB+ois3h/et0shEz0qApgHYGpY= -github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144 h1:k9tdF32oJYwtjzMx+D26M6eYiCaAPdJ7tyN7tF1oU5Q= -github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144/go.mod h1:BKdcez7BiVtBvIcef90ZPc6ebqIWr4JWD7+EvLm6J98= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 h1:7I5c2Ig/5FgqkYOh/N87NzoyI9U15qUPXhDD8uCupv8= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= +github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f h1:MoxeMfHAe5Qj/ySSBfL8A7l1V+hxuluj8owsIEEZipI= +github.com/tonistiigi/fsutil v0.0.0-20250605211040-586307ad452f/go.mod h1:BKdcez7BiVtBvIcef90ZPc6ebqIWr4JWD7+EvLm6J98= +github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 h1:2f304B10LaZdB8kkVEaoXvAMVan2tl9AiK4G0odjQtE= +github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/pkg/api/api.go new/docker-compose-2.37.2/pkg/api/api.go --- old/docker-compose-2.37.1/pkg/api/api.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/pkg/api/api.go 2025-06-20 15:16:51.000000000 +0200 @@ -351,7 +351,7 @@ // RunOptions group options of the Run API type RunOptions struct { - Build *BuildOptions + CreateOptions // Project is the compose project used to define this app. Might be nil if user ran command just with project name Project *types.Project Name string @@ -371,8 +371,6 @@ Privileged bool UseNetworkAliases bool NoDeps bool - // QuietPull makes the pulling process quiet - QuietPull bool // used by exec Index int } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/pkg/compose/apiSocket.go new/docker-compose-2.37.2/pkg/compose/apiSocket.go --- old/docker-compose-2.37.1/pkg/compose/apiSocket.go 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.2/pkg/compose/apiSocket.go 2025-06-20 15:16:51.000000000 +0200 @@ -0,0 +1,90 @@ +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package compose + +import ( + "bytes" + "fmt" + "strings" + + "github.com/compose-spec/compose-go/v2/types" + "github.com/docker/cli/cli/config/configfile" +) + +// --use-api-socket is not actually supported by the Docker Engine +// but is a client-side hack (see https://github.com/docker/cli/blob/master/cli/command/container/create.go#L246) +// we replicate here by transforming the project model + +func (s *composeService) useAPISocket(project *types.Project) (*types.Project, error) { + useAPISocket := false + for _, service := range project.Services { + if service.UseAPISocket { + useAPISocket = true + break + } + } + if !useAPISocket { + return project, nil + } + + socket := s.dockerCli.DockerEndpoint().Host + if !strings.HasPrefix(socket, "unix://") { + return nil, fmt.Errorf("use_api_socket can only be used with unix sockets: docker endpoint %s is incompatible", socket) + } + socket = strings.TrimPrefix(socket, "unix://") // should we confirm absolute path? + + creds, err := s.dockerCli.ConfigFile().GetAllCredentials() + if err != nil { + return nil, fmt.Errorf("resolving credentials failed: %w", err) + } + newConfig := &configfile.ConfigFile{ + AuthConfigs: creds, + } + var configBuf bytes.Buffer + if err := newConfig.SaveToWriter(&configBuf); err != nil { + return nil, fmt.Errorf("saving creds for API socket: %w", err) + } + + project.Configs["#apisocket"] = types.ConfigObjConfig{ + Content: configBuf.String(), + } + + for name, service := range project.Services { + service.Volumes = append(service.Volumes, types.ServiceVolumeConfig{ + Type: types.VolumeTypeBind, + Source: socket, + Target: "/var/run/docker.sock", + }) + + _, envvarPresent := service.Environment["DOCKER_CONFIG"] + + // If the DOCKER_CONFIG env var is already present, we assume the client knows + // what they're doing and don't inject the creds. + if !envvarPresent { + // Set our special little location for the config file. + path := "/run/secrets/docker" + service.Environment["DOCKER_CONFIG"] = &path + } + + service.Configs = append(service.Configs, types.ServiceConfigObjConfig{ + Source: "#apisocket", + Target: "/run/secrets/docker/config.json", + }) + project.Services[name] = service + } + return project, nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/pkg/compose/build.go new/docker-compose-2.37.2/pkg/compose/build.go --- old/docker-compose-2.37.1/pkg/compose/build.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/pkg/compose/build.go 2025-06-20 15:16:51.000000000 +0200 @@ -28,7 +28,6 @@ "github.com/containerd/platforms" "github.com/docker/buildx/build" "github.com/docker/buildx/builder" - "github.com/docker/buildx/controller/pb" "github.com/docker/buildx/store/storeutil" "github.com/docker/buildx/util/buildflags" xprogress "github.com/docker/buildx/util/progress" @@ -483,8 +482,8 @@ DockerfilePath: dockerFilePath(service.Build.Context, service.Build.Dockerfile), NamedContexts: toBuildContexts(service, project), }, - CacheFrom: pb.CreateCaches(cacheFrom.ToPB()), - CacheTo: pb.CreateCaches(cacheTo.ToPB()), + CacheFrom: build.CreateCaches(cacheFrom), + CacheTo: build.CreateCaches(cacheTo), NoCache: service.Build.NoCache, Pull: service.Build.Pull, BuildArgs: flatten(resolveAndMergeBuildArgs(s.dockerCli, project, service, options)), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/pkg/compose/create.go new/docker-compose-2.37.2/pkg/compose/create.go --- old/docker-compose-2.37.1/pkg/compose/create.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/pkg/compose/create.go 2025-06-20 15:16:51.000000000 +0200 @@ -114,6 +114,13 @@ "--remove-orphans flag to clean it up.", orphans.names()) } } + + // Temporary implementation of use_api_socket until we get actual support inside docker engine + project, err = s.useAPISocket(project) + if err != nil { + return err + } + return newConvergence(options.Services, observedState, networks, volumes, s).apply(ctx, project, options) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.1/pkg/compose/run.go new/docker-compose-2.37.2/pkg/compose/run.go --- old/docker-compose-2.37.1/pkg/compose/run.go 2025-06-12 10:18:57.000000000 +0200 +++ new/docker-compose-2.37.2/pkg/compose/run.go 2025-06-20 15:16:51.000000000 +0200 @@ -28,6 +28,7 @@ "github.com/docker/cli/cli" cmd "github.com/docker/cli/cli/command/container" "github.com/docker/compose/v2/pkg/api" + "github.com/docker/compose/v2/pkg/progress" "github.com/docker/docker/pkg/stringid" ) @@ -58,6 +59,19 @@ } func (s *composeService) prepareRun(ctx context.Context, project *types.Project, opts api.RunOptions) (string, error) { + // Temporary implementation of use_api_socket until we get actual support inside docker engine + project, err := s.useAPISocket(project) + if err != nil { + return "", err + } + + err = progress.Run(ctx, func(ctx context.Context) error { + return s.startDependencies(ctx, project, opts) + }, s.stdinfo()) + if err != nil { + return "", err + } + service, err := project.GetService(opts.Service) if err != nil { return "", err @@ -160,3 +174,33 @@ service.Labels = service.Labels.Add(k, v) } } + +func (s *composeService) startDependencies(ctx context.Context, project *types.Project, options api.RunOptions) error { + var dependencies []string + for name := range project.Services { + if name != options.Service { + dependencies = append(dependencies, name) + } + } + + project, err := project.WithSelectedServices(dependencies) + if err != nil { + return err + } + err = s.Create(ctx, project, api.CreateOptions{ + Build: options.Build, + IgnoreOrphans: options.IgnoreOrphans, + RemoveOrphans: options.RemoveOrphans, + QuietPull: options.QuietPull, + }) + if err != nil { + return err + } + + if len(dependencies) > 0 { + return s.Start(ctx, project.Name, api.StartOptions{ + Project: project, + }) + } + return nil +} ++++++ docker-compose.obsinfo ++++++ --- /var/tmp/diff_new_pack.0A2orm/_old 2025-06-23 15:00:41.382339452 +0200 +++ /var/tmp/diff_new_pack.0A2orm/_new 2025-06-23 15:00:41.386339620 +0200 @@ -1,5 +1,5 @@ name: docker-compose -version: 2.37.1 -mtime: 1749716337 -commit: 343117233b901110b464786a4daccc264babb56b +version: 2.37.2 +mtime: 1750425411 +commit: f7825a56bf4e430024dfce48b1f3f332c2fd3d85 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz /work/SRC/openSUSE:Factory/.docker-compose.new.7067/vendor.tar.gz differ: char 44, line 1
