You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add Podman support as Docker alternative (#34)
Add container runtime abstraction so mxcli works with both Docker and
Podman 4.7+. Auto-detects the runtime on PATH, with MXCLI_CONTAINER_CLI
env var as explicit override. Adds --container-runtime flag to mxcli init
and a Podman-in-Podman devcontainer config.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .claude/skills/mendix/docker-workflow.md
+14-5Lines changed: 14 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,18 +14,27 @@ Use this when:
14
14
15
15
The devcontainer created by `mxcli init` includes:
16
16
-**JDK 21** (Adoptium temurin-21-jdk) — required by MxBuild
17
-
-**Docker-in-Docker**— Docker daemon running inside the devcontainer
17
+
-**Docker-in-Docker**(or **Podman-in-Podman**) — container runtime inside the devcontainer
18
18
-**Port forwarding** — ports 8080 (app) and 8090 (admin) auto-forwarded
19
19
20
+
### Podman Support
21
+
22
+
mxcli auto-detects Docker or Podman. To force Podman:
23
+
```bash
24
+
export MXCLI_CONTAINER_CLI=podman
25
+
```
26
+
27
+
When using `mxcli init`, pass `--container-runtime podman` to generate a devcontainer with Podman-in-Podman instead of Docker-in-Docker. Requires Podman 4.7+ (ships `podman compose` natively).
28
+
20
29
## Architecture
21
30
22
31
```
23
32
Host machine (browser at localhost:8080)
24
-
└── Docker (host daemon)
33
+
└── Docker or Podman (host daemon)
25
34
└── Devcontainer (VS Code)
26
35
├── mxcli, JDK 21, project files
27
-
└── Docker daemon (docker-in-docker)
28
-
└── docker compose stack
36
+
└── Docker/Podman daemon (docker-in-docker or podman-in-podman)
37
+
└── docker/podman compose stack
29
38
├── mendix container (8080, 8090)
30
39
│ └── /mendix ← volume mount from .docker/build/
31
40
└── postgres container (5432)
@@ -392,7 +401,7 @@ All defaults can be overridden in `.docker/.env`.
392
401
393
402
| Problem | Solution |
394
403
|---------|----------|
395
-
|`docker: command not found`| Rebuild devcontainer — docker-in-docker feature needs rebuild to activate |
404
+
|`docker: command not found`| Rebuild devcontainer — docker-in-docker feature needs rebuild to activate. Or use Podman: `export MXCLI_CONTAINER_CLI=podman`|
396
405
|`mxbuild not found`| Run `mxcli setup mxbuild -p app.mpr` to download from CDN |
397
406
|`JDK 21 not found`| Rebuild devcontainer — JDK 21 should be pre-installed |
398
407
| Build fails with version error | Requires Mendix >= 11.6.1 for PAD support |
"postCreateCommand": "curl -fsSL https://claude.ai/install.sh | bash && if [ -f ./mxcli ] && ! file ./mxcli | grep -q Linux; then echo '⚠ ./mxcli is not a Linux binary. Replace it with the linux-amd64 or linux-arm64 build.'; fi",
Copy file name to clipboardExpand all lines: docs-site/src/tools/devcontainer.md
+21-2Lines changed: 21 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,9 +57,11 @@ mxcli init -p app.mpr
57
57
# - VS Code MDL extension (auto-installed)
58
58
```
59
59
60
-
## Docker-in-Docker
60
+
## Container Runtime (Docker or Podman)
61
61
62
-
For `mxcli docker build`, `mxcli docker run`, and `mxcli test` (which require Docker), the dev container must have Docker-in-Docker support enabled. This is typically configured in `devcontainer.json`:
62
+
For `mxcli docker build`, `mxcli docker run`, and `mxcli test` (which require a container runtime), the dev container must have Docker-in-Docker or Podman-in-Podman support enabled.
63
+
64
+
### Docker-in-Docker (default)
63
65
64
66
```json
65
67
{
@@ -69,6 +71,23 @@ For `mxcli docker build`, `mxcli docker run`, and `mxcli test` (which require Do
69
71
}
70
72
```
71
73
74
+
### Podman-in-Podman
75
+
76
+
For organizations that cannot use Docker Desktop due to licensing:
When running `mxcli init`, use `--container-runtime podman` to generate this configuration automatically. Requires Podman 4.7+ (ships `podman compose` with Docker Compose V2 compatibility).
0 commit comments