Skip to content

Rename local Docker stack to Datamingle#35

Merged
jruszo merged 2 commits intomasterfrom
feature/datamingle-container-naming
Apr 24, 2026
Merged

Rename local Docker stack to Datamingle#35
jruszo merged 2 commits intomasterfrom
feature/datamingle-container-naming

Conversation

@jruszo
Copy link
Copy Markdown
Owner

@jruszo jruszo commented Apr 24, 2026

Summary

  • Rename the local Docker/compose stack, demo credentials, and container paths from Archery to Datamingle
  • Add a Datamingle local docs file plus a helper to migrate existing archery MySQL data into datamingle
  • Update settings defaults, compose references, and user-facing docs to match the new naming

Testing

  • Ran focused Django tests for the local demo seed
  • Verified migration drift with makemigrations --check
  • Ran the local demo smoke check end to end in the app container
  • Validated compose configs and shell syntax for the migration helper

Summary by CodeRabbit

  • Chores

    • Renamed application service, containers, and databases from "archery" to "datamingle" across Docker and local deployment configurations.
    • Updated database credentials and environment variables to reference the new "datamingle" naming convention.
  • Documentation

    • Added migration guide and script for users to transfer existing local Docker data from "archery" to "datamingle" databases before running the updated stack.
    • Updated deployment and setup instructions to reflect new service and container names.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 24, 2026

Warning

Rate limit exceeded

@jruszo has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 35 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 48 minutes and 35 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 04a3e43e-c787-4c40-b868-d381ae735806

📥 Commits

Reviewing files that changed from the base of the PR and between 72d67ad and 02a0f50.

📒 Files selected for processing (6)
  • README.md
  • scripts/docker/migrate-archery-db-to-datamingle.sh
  • scripts/e2e/reset-local-env.sh
  • src/docker-compose/datamingle/docs.md
  • src/docker/Dockerfile
  • src/docker/setup.sh
📝 Walkthrough

Walkthrough

Comprehensive rebranding migration from "archery" to "datamingle" across the application stack. Database connection strings, service/container names, file paths, environment variables, Docker configurations, and documentation are systematically renamed to reflect the new project identity.

Changes

Cohort / File(s) Summary
Configuration & Environment
.gitignore, src/docker-compose/.env, src/docker-compose/.env.local-arm
Updated Docker-compose ignore patterns and environment variables to reference datamingle download/data directories and MySQL database connection (DATABASE_URL changed from archery to datamingle).
Documentation
README.md, AGENTS.md, frontend/README.md, src/docker-compose/LOCAL_DEMO.md, src/docker-compose/archery/docs.md, src/docker-compose/datamingle/docs.md
Updated Docker service references, added migration guide for existing archery databases, added new Datamingle Docker documentation with setup commands and demo credentials, removed obsolete archery docs.
Django Settings & Templates
archery/settings.py, common/templates/config.html, src/docker-compose/datamingle/settings.py
Updated database name (archerydatamingle), test database name, Django-Q cluster identifier, API documentation title, logging output path, and configuration placeholders; created new Datamingle settings override module.
Database & Schema
sql/local_demo.py, sql/test_local_demo.py, src/docker-compose/mysql-demo/init/001-demo-schema.sql
Updated demo instance database usernames from demo_archery to demo_datamingle and corresponding MySQL privilege grants.
Docker Compose & Orchestration
src/docker-compose/docker-compose.yml, src/docker-compose/docker-compose.local-arm.yml
Renamed service from archery to datamingle, updated container names, image references, MySQL database initialization, volume mounts, and entrypoint paths for both standard and ARM variants.
Docker Images & Runtime
src/docker/Dockerfile, src/docker/Dockerfile.local-arm, src/docker/nginx.conf, src/docker/setup.sh, src/docker/startup.sh, src/docker-compose/datamingle/soar.yaml
Updated application paths from /opt/archery to /opt/datamingle, virtual environment paths, Nginx server name and static file paths, and Soar logging output location. Dockerfile includes virtualenv migration logic to handle existing venv4a* environments.
Database Migration & E2E Scripts
scripts/docker/migrate-archery-db-to-datamingle.sh, scripts/e2e/reset-local-env.sh
Added new migration script to safely copy archery MySQL schema to datamingle with timestamped backups and safety checks; updated E2E reset script to target datamingle download directories and services.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 From archery's bow to datamingle's stream,
We rename with care—fulfilling the dream!
Services, containers, and databases aligned,
A fresh identity, perfectly redesigned. ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Rename local Docker stack to Datamingle' is concise and directly reflects the main changeset objective—renaming the Docker stack from Archery to Datamingle across configuration files, settings, documentation, and scripts.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/datamingle-container-naming

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 and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (7)
AGENTS.md (1)

15-15: Optional: prefer docker compose (v2) over docker-compose (v1).

Compose v1 (the hyphenated docker-compose binary) reached end-of-life in June 2023 and is no longer receiving updates. Since this file is the go-to runbook for agents, consider switching to the v2 plugin syntax (docker compose …) here and in other docs to avoid steering users toward a deprecated CLI. Not a blocker — v1 still works if installed.

♻️ Suggested change
-  - `docker-compose -f src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle`
+  - `docker compose -f src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@AGENTS.md` at line 15, Update the run command in AGENTS.md to use the Docker
Compose v2 plugin syntax instead of the deprecated v1 binary: replace the
hyphenated invocation (`docker-compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle`) with
the plugin form (`docker compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle`); also
scan other documentation files for any `docker-compose` occurrences and update
them to `docker compose` to avoid recommending the EOL CLI.
src/docker-compose/LOCAL_DEMO.md (1)

20-20: Optional: migrate commands to Compose v2 syntax.

Same note as AGENTS.mddocker-compose is v1 (EOL June 2023). Consider using docker compose (space) so the docs match the currently supported CLI.

Also applies to: 114-114

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/docker-compose/LOCAL_DEMO.md` at line 20, Update the deprecated v1 CLI
usage by replacing the literal command string "docker-compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle" (and
any other occurrences of "docker-compose" in this document and the AGENTS.md
reference) with the Compose v2 syntax "docker compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle";
search for other plain "docker-compose" tokens in the docs and change them to
"docker compose" to ensure the docs use the supported CLI.
README.md (1)

48-54: Consider noting the MYSQL_CONTAINER env override for the standard compose file.

The migration script defaults MYSQL_CONTAINER=datamingle-mysql, but the default src/docker-compose/docker-compose.yml names the service mysql. Users who run the snippet verbatim against that compose file will hit the script's container not found exit path. A quick hint here (e.g. MYSQL_CONTAINER=mysql scripts/docker/migrate-archery-db-to-datamingle.sh) would save a round trip.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 48 - 54, Update the README migration snippet to
mention and demonstrate the MYSQL_CONTAINER env override so users running the
standard compose (service named mysql) don't hit "container not found";
specifically reference the migration script migrate-archery-db-to-datamingle.sh
and show the command with MYSQL_CONTAINER=mysql prefixed (e.g.
MYSQL_CONTAINER=mysql scripts/docker/migrate-archery-db-to-datamingle.sh), and
add a short note that the script defaults to datamingle-mysql but can be
overridden via MYSQL_CONTAINER when the compose service is named mysql.
src/docker/Dockerfile (1)

1-1: Default BASE_IMAGE still points at hhyo/archery-base.

Consider whether you want to publish/pin a Datamingle-branded base image or at least document that the default remains the upstream Archery base. The in-line migration of venv4a* handles this transparently, so it's not a bug — just flagging the leftover name in case there's a follow-up to republish the base under the new identity.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/docker/Dockerfile` at line 1, The Dockerfile's ARG BASE_IMAGE currently
defaults to the upstream string ARG BASE_IMAGE="hhyo/archery-base:sha-d8159f4";
either change that default to a Datamingle-branded/pinned image (e.g., replace
the value with your org's base image tag) or add a clear inline comment next to
ARG BASE_IMAGE explaining that the default intentionally points to the upstream
Archery base and that venv4a* migration is handled transparently; update the ARG
declaration (BASE_IMAGE) accordingly so the intent is explicit for future
maintainers.
src/docker-compose/datamingle/docs.md (1)

12-16: Prefer Compose V2 (docker compose) in the example.

docker-compose (V1, Python) was deprecated in 2023 and is no longer shipped by recent Docker installs, which ship Compose V2 as the docker compose plugin. Users on a fresh Docker Engine / Desktop will hit a "command not found" here.

✏️ Proposed tweak
-docker-compose -f src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle
+docker compose -f src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/docker-compose/datamingle/docs.md` around lines 12 - 16, Update the
example Compose commands to use Compose V2 syntax by replacing the
docker-compose invocation with the docker compose plugin (e.g., change the
command starting with "docker-compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle" to use
"docker compose -f ... up -d --build datamingle") and keep the subsequent docker
exec manage.py commands the same; ensure the docs show the V2 form so users with
modern Docker (which provides `docker compose`) won't see a "command not found"
error.
scripts/docker/migrate-archery-db-to-datamingle.sh (2)

44-45: Consider hardening mysqldump flags.

For local dev this works, but two optional flags would reduce surprises:

  • --default-character-set=utf8mb4 — the app schema uses utf8mb4, so pin the dump charset to avoid client-default mismatches.
  • --set-gtid-purged=OFF — avoids injecting SET @@GLOBAL.GTID_PURGED into the dump, which can fail import on a target server without matching GTID state (more relevant if anyone repurposes this against a non-default MySQL).
♻️ Proposed tweak
 docker exec "$MYSQL_CONTAINER" mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" \
-  --single-transaction --routines --triggers "$SOURCE_DB" > "$BACKUP_PATH"
+  --single-transaction --routines --triggers \
+  --default-character-set=utf8mb4 --set-gtid-purged=OFF \
+  "$SOURCE_DB" > "$BACKUP_PATH"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/docker/migrate-archery-db-to-datamingle.sh` around lines 44 - 45, The
mysqldump invocation using the variables MYSQL_CONTAINER, MYSQL_USER,
MYSQL_PASSWORD, SOURCE_DB and BACKUP_PATH should be hardened by adding the flags
--default-character-set=utf8mb4 and --set-gtid-purged=OFF to the docker exec
mysqldump command; update the command that currently reads docker exec
"$MYSQL_CONTAINER" mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"
--single-transaction --routines --triggers "$SOURCE_DB" > "$BACKUP_PATH" to
include those two flags so the dump pins the charset and disables GTID_PURGED
output.

37-51: Partial-failure recovery leaves the target half-populated.

If mysql ... < "$BACKUP_PATH" fails partway (e.g. FK or encoding error), the target DB will contain some tables and subsequent re-runs will trip the "target not empty" guard on Line 37, forcing manual cleanup. Consider either:

  • Dropping/recreating the target on failure (trap on ERR), or
  • Documenting the manual recovery steps in src/docker-compose/datamingle/docs.md alongside the script invocation.

Also worth noting: backups default to /tmp, which may be tmpfs on some hosts and/or size-constrained for large databases. A brief note in the docs about BACKUP_PATH override would help operators.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/docker/migrate-archery-db-to-datamingle.sh` around lines 37 - 51, The
import can leave the target half-populated on partial failure; add a cleanup
trap and documentation: implement a cleanup function (e.g., cleanup_on_error)
registered with trap 'ERR' that checks database_exists "$TARGET_DB" and, if
table_count "$TARGET_DB" != "0", drops and recreates the target via mysql_exec
"DROP DATABASE \`$TARGET_DB\`; CREATE DATABASE..." to ensure retries start from
a clean DB (register trap before the docker exec import and unregister on
success), and also update docs referenced (datamingle docs) to mention
BACKUP_PATH defaulting to /tmp and recommend overriding it for large DBs or
tmpfs-backed hosts.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/docker/setup.sh`:
- Line 51: The venv is created at a relative path by the line "python3 -m venv
venv4datamingle" but startup.sh expects an absolute "/opt/venv4datamingle";
update the venv creation to use the absolute path (use /opt/venv4datamingle) so
the virtualenv location matches startup.sh and the Dockerfile.local-arm pattern,
ensuring activation uses the correct interpreter.

---

Nitpick comments:
In `@AGENTS.md`:
- Line 15: Update the run command in AGENTS.md to use the Docker Compose v2
plugin syntax instead of the deprecated v1 binary: replace the hyphenated
invocation (`docker-compose -f src/docker-compose/docker-compose.local-arm.yml
up -d --build datamingle`) with the plugin form (`docker compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle`); also
scan other documentation files for any `docker-compose` occurrences and update
them to `docker compose` to avoid recommending the EOL CLI.

In `@README.md`:
- Around line 48-54: Update the README migration snippet to mention and
demonstrate the MYSQL_CONTAINER env override so users running the standard
compose (service named mysql) don't hit "container not found"; specifically
reference the migration script migrate-archery-db-to-datamingle.sh and show the
command with MYSQL_CONTAINER=mysql prefixed (e.g. MYSQL_CONTAINER=mysql
scripts/docker/migrate-archery-db-to-datamingle.sh), and add a short note that
the script defaults to datamingle-mysql but can be overridden via
MYSQL_CONTAINER when the compose service is named mysql.

In `@scripts/docker/migrate-archery-db-to-datamingle.sh`:
- Around line 44-45: The mysqldump invocation using the variables
MYSQL_CONTAINER, MYSQL_USER, MYSQL_PASSWORD, SOURCE_DB and BACKUP_PATH should be
hardened by adding the flags --default-character-set=utf8mb4 and
--set-gtid-purged=OFF to the docker exec mysqldump command; update the command
that currently reads docker exec "$MYSQL_CONTAINER" mysqldump -u"$MYSQL_USER"
-p"$MYSQL_PASSWORD" --single-transaction --routines --triggers "$SOURCE_DB" >
"$BACKUP_PATH" to include those two flags so the dump pins the charset and
disables GTID_PURGED output.
- Around line 37-51: The import can leave the target half-populated on partial
failure; add a cleanup trap and documentation: implement a cleanup function
(e.g., cleanup_on_error) registered with trap 'ERR' that checks database_exists
"$TARGET_DB" and, if table_count "$TARGET_DB" != "0", drops and recreates the
target via mysql_exec "DROP DATABASE \`$TARGET_DB\`; CREATE DATABASE..." to
ensure retries start from a clean DB (register trap before the docker exec
import and unregister on success), and also update docs referenced (datamingle
docs) to mention BACKUP_PATH defaulting to /tmp and recommend overriding it for
large DBs or tmpfs-backed hosts.

In `@src/docker-compose/datamingle/docs.md`:
- Around line 12-16: Update the example Compose commands to use Compose V2
syntax by replacing the docker-compose invocation with the docker compose plugin
(e.g., change the command starting with "docker-compose -f
src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle" to use
"docker compose -f ... up -d --build datamingle") and keep the subsequent docker
exec manage.py commands the same; ensure the docs show the V2 form so users with
modern Docker (which provides `docker compose`) won't see a "command not found"
error.

In `@src/docker-compose/LOCAL_DEMO.md`:
- Line 20: Update the deprecated v1 CLI usage by replacing the literal command
string "docker-compose -f src/docker-compose/docker-compose.local-arm.yml up -d
--build datamingle" (and any other occurrences of "docker-compose" in this
document and the AGENTS.md reference) with the Compose v2 syntax "docker compose
-f src/docker-compose/docker-compose.local-arm.yml up -d --build datamingle";
search for other plain "docker-compose" tokens in the docs and change them to
"docker compose" to ensure the docs use the supported CLI.

In `@src/docker/Dockerfile`:
- Line 1: The Dockerfile's ARG BASE_IMAGE currently defaults to the upstream
string ARG BASE_IMAGE="hhyo/archery-base:sha-d8159f4"; either change that
default to a Datamingle-branded/pinned image (e.g., replace the value with your
org's base image tag) or add a clear inline comment next to ARG BASE_IMAGE
explaining that the default intentionally points to the upstream Archery base
and that venv4a* migration is handled transparently; update the ARG declaration
(BASE_IMAGE) accordingly so the intent is explicit for future maintainers.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5cc7928f-adde-41b5-ac1d-0e9ca47fe666

📥 Commits

Reviewing files that changed from the base of the PR and between ae92a21 and 72d67ad.

📒 Files selected for processing (28)
  • .gitignore
  • AGENTS.md
  • README.md
  • archery/settings.py
  • common/templates/config.html
  • frontend/README.md
  • scripts/docker/migrate-archery-db-to-datamingle.sh
  • scripts/e2e/reset-local-env.sh
  • sql/local_demo.py
  • sql/test_local_demo.py
  • src/docker-compose/.env
  • src/docker-compose/.env.local-arm
  • src/docker-compose/LOCAL_DEMO.md
  • src/docker-compose/archery/docs.md
  • src/docker-compose/archery/settings.py
  • src/docker-compose/datamingle/docs.md
  • src/docker-compose/datamingle/downloads/binlog2sql/.gitkeep
  • src/docker-compose/datamingle/downloads/schemasync/.gitkeep
  • src/docker-compose/datamingle/settings.py
  • src/docker-compose/datamingle/soar.yaml
  • src/docker-compose/docker-compose.local-arm.yml
  • src/docker-compose/docker-compose.yml
  • src/docker-compose/mysql-demo/init/001-demo-schema.sql
  • src/docker/Dockerfile
  • src/docker/Dockerfile.local-arm
  • src/docker/nginx.conf
  • src/docker/setup.sh
  • src/docker/startup.sh
💤 Files with no reviewable changes (2)
  • src/docker-compose/archery/docs.md
  • src/docker-compose/archery/settings.py

Comment thread src/docker/setup.sh Outdated
@jruszo jruszo merged commit 7b098b5 into master Apr 24, 2026
6 of 7 checks passed
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.

1 participant