lando-to-dockerlisted
Install: claude install-skill JMAILLY/claude-migration-skills
# Lando → Docker Compose + Makefile (Drupal local dev)
This is the **upstream prerequisite** skill: it produces the `Makefile` (and the
Dockerized environment behind it) that `d11`, `gulp-to-vite`, `sass-migrator`
and `php-docker-upgrade` all depend on. The target architecture is the one used
across the reference projects (ginger-cebtp, sterimed, akena):
```
Traefik (shared, external) ──► apache (httpd:2.4-alpine, proxy_fcgi)
*.dev.localhost, TLS └─► php (php:8.4-fpm)
├─ db (mariadb:11.8)
├─ redis (redis:7-alpine)
├─ node (node:22-alpine, idle)
├─ adminer (adminer:5.4.2)
└─ mailpit (axllent/mailpit)
```
## Golden rule
The **Makefile is the single developer entrypoint** — after this migration,
every `drush`/`composer`/`npm` runs through a `make` target inside a container,
never via `lando` and never on the host. Building that Makefile faithfully is
the core deliverable.
## Prerequisites (host, once per machine)
A **shared external Traefik** and a local wildcard cert — see
`references/compose-traefik.md`:
```bash
docker network create traefik-public
mkcert -install && mkcert "*.dev.localhost" # feed cert to the Traefik instance
```
`*.dev.localhost` resolves to 127.0.0.1 automatically — no `/etc/hosts` edits.
If the user has no shared Traefik,