Skip to content

Track Compose compatibility gaps found with apple/container 1.0.0 #118

Closed

Description

@thromel

Summary

This tracks a small set of Compose compatibility gaps found while testing container-compose 1.0.0 with apple/container 1.0.0 on macOS 26.5.1.

The goal is to keep the work contribution-friendly: each linked issue is narrow enough to fix or validate independently.

This tracker is for Compose compatibility work in container-compose. Runtime-level fixes should happen upstream in apple/container; the main one from this test run is container name/service DNS.

Environment used for the repros

- OS: macOS 26.5.1 (25F80)
- Xcode: 26.5 (17F42)
- container: 1.0.0 (release, commit ee848e3)
- container-compose: 1.0.0 installed via Homebrew
- Architecture: arm64

Issues

Upstream dependencies / related Apple Container issues

Suggested contribution order

  1. One-shot services are reported as startup timeouts and failures can exit 0 #115: fix one-shot service wait semantics and CLI exit status.
    This should be mostly internal container-compose behavior and is easy to regression-test.

  2. Parse Compose service network object form for aliases #116: accept Compose network object syntax.
    Even if aliases cannot fully work until service discovery improves, the YAML shape should decode cleanly.

  3. Named container workaround fails when container copies data into it #52: switch named-volume handling to native container named volumes where supported.
    The current workaround looks stale against container 1.0.0.

  4. healthcheck and depends_on service_healthy are silently ignored #117: either implement healthcheck/dependency behavior or emit a clear unsupported-feature error.
    Silent ignore is the risky part.

  5. Services on the same Compose network cannot resolve service names #114: track Apple Container DNS/service discovery behavior.
    If upstream runtime support is required, the immediate improvement may be documentation, warning output, and tests that mark the limitation explicitly.

Definition of done

  • Minimal repro compose files for each issue are added as tests or fixtures.
  • Commands return non-zero when startup fails.
  • Successful one-shot services are not reported as timeouts.
  • Unsupported Compose features produce clear diagnostics instead of silent behavior differences.
  • The tracker checklist above is updated as issues are fixed or determined to be upstream-only.

Activity

  1. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Update from local validation and PR work:

    The Container-Compose PR addresses named volumes, one-shot dependency handling, healthcheck gating, dependency-condition parsing, network object parsing, and alias warning behavior. Full Compose-style service discovery still depends on Apple runtime support for network-scoped DNS/aliases.

  2. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Additional Apple-side contribution now linked from the compose PR: apple/container#1811 proposes a native container run --hostname flag. Container-Compose PR #119 intentionally warns and skips Compose hostname: when targeting Apple Container 1.0.0, then points to that upstream path for proper runtime support.

  3. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Upstream update: I opened apple/container#1813 as a draft for the container-facing DNS layer.

    Current upstream chain:

    This should cover the bare service-name/container-name DNS path once accepted upstream. Explicit per-network aliases are still not implemented in apple/container yet, so Container-Compose alias support should remain blocked on that upstream API/CLI surface.

  4. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Another upstream update: apple/container#1815 is open as a draft for explicit network aliases.

    Current upstream chain:

    Once the Apple-side PRs settle, Container-Compose can map Compose service/network aliases onto the upstream alias= attachment property instead of carrying a workaround.

  5. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Container-Compose PR #119 now includes a conditional alias mapping path:

    • when the linked Apple container command parser accepts --network name,alias=..., Compose network aliases are emitted as Apple network alias properties
    • when linked against Apple Container 1.0.0, it preserves the existing warning/skip behavior instead of passing an unsupported property

    That keeps #119 compatible with current Apple Container while making it ready for the alias surface proposed in apple/container#1815.

  6. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Upstream status update:

  7. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Status update: Container-Compose PR #119 is now marked ready for review.

    It remains compatible with Apple Container 1.0.0 by warning/skipping unsupported alias and hostname flags, while carrying conditional paths for the upstream Apple features proposed in apple/container#1811 and apple/container#1815.

  8. thromel commented on Jun 25, 2026

    @thromel
    ContributorAuthor

    Upstream status update: apple/container#1815 is now ready for review.

    The alias PR has live validation for --network name,alias=... resolving aliases through gateway DNS, plus duplicate-alias rejection. That means Container-Compose PR #119's conditional alias path now has a validated upstream target while still preserving Apple Container 1.0.0 fallback behavior.

  9. ryan106 commented on Jul 2, 2026

    @ryan106
    Contributor

    Went through this whole tracker against current main while working on #126 (Compose profiles support). Looks like #119 (merged the same day this tracker was opened) already fixed everything except the DNS item:

    So this tracker is effectively done modulo #114, which isn't fixable here. Might be worth closing #52/#115/#116/#117 individually and leaving this issue open just to track #114, or closing this one too and letting #114 stand alone — your call on how you like to manage the tracker.

  10. thromel commented on Jul 2, 2026

    @thromel
    ContributorAuthor

    Thanks for validating this against current main. I agree with that split.

    I closed #115, #116, and #117 as completed by #119. #52 also appears resolved by #119 based on the WordPress repro validation, but I do not have permission to close an issue opened by another user, so a maintainer will need to close that one.

    I am leaving #114 open as the remaining live item, since Compose service-name DNS still depends on Apple Container runtime support rather than another Container-Compose parser/orchestration fix.

  11. Mcrich23 commented on Sep 9, 2026

    @Mcrich23
    Owner

    Thank you for tracking these and following up with the upstream work. The original items are addressed except for service-name DNS, which already has #114. I'm closing this tracker so we can keep the remaining work there. The additional healthcheck and completion cases are being addressed in #151 and #154.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions