Skip to content

fix(tools): migrate docker-compose to docker compose plugin - #95

Draft
rhanka wants to merge 1 commit into
mainfrom
fix/docker-compose-plugin-migration
Draft

fix(tools): migrate docker-compose to docker compose plugin#95
rhanka wants to merge 1 commit into
mainfrom
fix/docker-compose-plugin-migration

Conversation

@rhanka

@rhanka rhanka commented Jul 9, 2026

Copy link
Copy Markdown
Member

What & why

PR #94 reverted an earlier docker compose migration back to docker-compose and re-added a sudo tee /usr/local/bin/docker-compose wrapper install inside the config target of packages/tools/Makefile. That sudo step blocks non-interactive make config on dev machines that don't already have a docker-compose binary.

This PR removes that dev-facing blocker and modernizes the two remaining laggards to the Docker CLI docker compose plugin. The root Makefile, deces-backend, deces-infra, and dataprep-frontend already use docker compose; only packages/tools and packages/dataprep-backend still forced the obsolete standalone binary.

Changes

  • packages/tools/Makefile
    • export DC := docker-composeexport DC ?= docker compose (overridable, so a parent make's exported value still wins; consistent with deces-backend/deces-infra).
    • Removed the ifeq … sudo tee /usr/local/bin/docker-compose … endif wrapper-install block from the config target (the dev blocker). Replaced it with a non-sudo plugin presence check that mirrors the style already used in the repo:
      docker compose version >/dev/null 2>&1 || { echo "docker compose plugin required (install docker-compose-plugin)" >&2; exit 1; }
  • packages/dataprep-backend/Makefile
    • DC := 'docker-compose'DC ?= docker compose (dropped the quotes; a quoted two-word value would break ${DC} invocation).
    • Routed the one literal docker-compose logs call site (start target) through ${DC}.

Intentionally deferred (out of scope for a targeted dev-blocker fix)

  • Offline binary bundling in packages/dataprep-backend/Makefile (package/depackage): these curl-download and ship a docker-compose 1.27.4 binary for air-gapped installs. Migrating changes a deployment assumption (target hosts must ship the compose plugin) and is left untouched.
  • Base-image smoke parity checks: Makefile (deces-ui-base-image-smoke) and packages/deces-dataprep/Makefile (remote-base-image-smoke) each assert both docker compose version and the legacy docker-compose version over SSH against provisioned base images. These are not ${DC} call sites, not dev blockers, and are not part of PR CI. Dropping the legacy line flips a base-image contract and belongs in a separate base-image change.
  • Cosmetic @echo docker-compose … display strings (pervasive across packages) — no functional effect, left as-is to keep the diff surgical.
  • packages/tools/.travis.yml (installs standalone docker-compose 1.19.0) — Travis appears inactive: every sibling package disabled it via .travis.yml.old/.off, GitHub Actions is the live CI, and this file is master-gated while the repo deploys from main. Left untouched.

Validation

  • make -C packages/tools -n config → runs the non-sudo docker compose version check, no sudo tee wrapper install.
  • make -C packages/tools -n docker-builddocker compose config / docker compose build --pull --no-cache.
  • make -C packages/dataprep-backend -n startdocker compose logs.
  • Both Makefiles parse cleanly.
  • ci.yml tools-swift job runs make -C packages/tools config on ubuntu-latest (compose plugin present + apt-installs docker-compose-plugin), so the new check passes with no sudo prompt.

🤖 Generated with Claude Code

Modernize the two remaining laggards to the Docker CLI compose plugin,
aligning them with the root Makefile and deces-backend/deces-infra/
dataprep-frontend which already use `docker compose`.

- packages/tools/Makefile: set `export DC ?= docker compose` (overridable)
  and remove the `sudo tee /usr/local/bin/docker-compose` wrapper install
  from the `config` target. That sudo step blocked non-interactive
  `make config` on dev machines lacking a `docker-compose` binary. It is
  replaced by a non-sudo plugin presence check that mirrors the style used
  elsewhere in the repo.
- packages/dataprep-backend/Makefile: set `DC ?= docker compose` (drop the
  quoted `'docker-compose'`) and route the one literal `docker-compose logs`
  call site in `start` through `${DC}`.

Deferred intentionally: the offline binary bundling in dataprep-backend
(`package`/`depackage` download and ship docker-compose 1.27.4 for
air-gapped installs) and the base-image `docker-compose version` smoke
parity checks (root Makefile / deces-dataprep) — both encode deployment
assumptions out of scope for this dev-blocker fix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 25a5d487-5376-484d-93a5-bdd999d520cf

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/docker-compose-plugin-migration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants