Move dev compose to docker/dev/ to match the standard layout #52

Closed
opened 2026-08-18 21:30:15 +02:00 by myrmidex · 0 comments
Owner

Problem

The container-dev MCP tooling resolves the dev compose file at a fixed path:

<project_root>/docker/dev/docker-compose.yml

dishplanner keeps it at the repo root (docker-compose.yml), so every container-dev tool — container_test, container_lint, container_analyse, container_tinker, container_db_read — fails immediately with FileNotFoundError before reaching a container.

This is a broken gate: the standard workflow expects tests, lint, and static analysis to run through these tools, and none of them work in this repo.

Reference: how ffr does it

ffr follows the expected layout and works:

docker/
├── build/
│   ├── Dockerfile.base
│   └── Dockerfile.ci
├── dev/
│   └── docker-compose.yml     <-- container-dev resolves this
├── nginx.conf
└── .env.example

dishplanner already shares the docker/build/Dockerfile.ci convention — only dev/ is missing.

Scope

Move docker-compose.ymldocker/dev/docker-compose.yml and fix the paths that assumed the repo root.

1. Compose file internals. ffr uses context: ../.. because its compose sits two levels down; dishplanner currently uses context: .. Every relative path needs rewriting:

  • build.context: .../..
  • volume mounts .../..
  • ./docker/mysql-init../mysql-init

2. shell.nix. Around 15 podman-compose helper commands (up, down, restart, logs, artisan, phpunit, …) currently rely on auto-discovering the compose file in the CWD. Adopt ffr's pattern — set it once and pass it explicitly:

COMPOSE_FILE="$PWD/docker/dev/docker-compose.yml"
alias pc='podman-compose -f $COMPOSE_FILE'

Also update the if [ -f "docker-compose.yml" ] guard near line 174.

3. Docs. README.mddocker-compose.yml) and CONTRIBUTING.md reference the old path.

Out of scope

  • docker-compose.prod.yml — stays at the repo root, does not reference the dev compose
  • CI — .forgejo/workflows/ci.yml builds from docker/build/Dockerfile.ci and build.yml from the root Dockerfile; neither uses the dev compose

Acceptance

  • docker/dev/docker-compose.yml exists; root docker-compose.yml removed
  • Containers build and start from the new location
  • shell.nix helpers work unchanged from the user's point of view
  • All five container-dev MCP tools succeed against project_path = repo root
  • Test suite passes through container_test
  • README and CONTRIBUTING updated
## Problem The `container-dev` MCP tooling resolves the dev compose file at a fixed path: ``` <project_root>/docker/dev/docker-compose.yml ``` dishplanner keeps it at the repo root (`docker-compose.yml`), so every `container-dev` tool — `container_test`, `container_lint`, `container_analyse`, `container_tinker`, `container_db_read` — fails immediately with `FileNotFoundError` before reaching a container. This is a **broken gate**: the standard workflow expects tests, lint, and static analysis to run through these tools, and none of them work in this repo. ## Reference: how ffr does it `ffr` follows the expected layout and works: ``` docker/ ├── build/ │ ├── Dockerfile.base │ └── Dockerfile.ci ├── dev/ │ └── docker-compose.yml <-- container-dev resolves this ├── nginx.conf └── .env.example ``` dishplanner already shares the `docker/build/Dockerfile.ci` convention — only `dev/` is missing. ## Scope Move `docker-compose.yml` → `docker/dev/docker-compose.yml` and fix the paths that assumed the repo root. **1. Compose file internals.** ffr uses `context: ../..` because its compose sits two levels down; dishplanner currently uses `context: .`. Every relative path needs rewriting: - `build.context: .` → `../..` - volume mounts `.` → `../..` - `./docker/mysql-init` → `../mysql-init` **2. `shell.nix`.** Around 15 `podman-compose` helper commands (`up`, `down`, `restart`, `logs`, `artisan`, `phpunit`, …) currently rely on auto-discovering the compose file in the CWD. Adopt ffr's pattern — set it once and pass it explicitly: ```nix COMPOSE_FILE="$PWD/docker/dev/docker-compose.yml" alias pc='podman-compose -f $COMPOSE_FILE' ``` Also update the `if [ -f "docker-compose.yml" ]` guard near line 174. **3. Docs.** `README.md` (§ `docker-compose.yml`) and `CONTRIBUTING.md` reference the old path. ## Out of scope - `docker-compose.prod.yml` — stays at the repo root, does not reference the dev compose - CI — `.forgejo/workflows/ci.yml` builds from `docker/build/Dockerfile.ci` and `build.yml` from the root `Dockerfile`; neither uses the dev compose ## Acceptance - [ ] `docker/dev/docker-compose.yml` exists; root `docker-compose.yml` removed - [ ] Containers build and start from the new location - [ ] `shell.nix` helpers work unchanged from the user's point of view - [ ] All five `container-dev` MCP tools succeed against `project_path` = repo root - [ ] Test suite passes through `container_test` - [ ] README and CONTRIBUTING updated
myrmidex added this to the v0.9.0 milestone 2026-08-18 21:30:15 +02:00
myrmidex added the
ci-cd
label 2026-08-18 21:30:15 +02:00
myrmidex self-assigned this 2026-08-18 23:48:22 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lvl0/dishplanner#52
No description provided.