38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
# Apple Container Compose — Xcode macOS application (prototype)
|
|
|
|
A native SwiftUI macOS front end for Apple's `container` runtime. Includes a bundled Python Compose-style orchestration engine from the initial MVP.
|
|
|
|
## Requirements
|
|
- Apple silicon Mac running macOS 26 or newer
|
|
- Xcode 26 or newer
|
|
- Apple's `container` CLI installed and configured
|
|
- Python 3 with PyYAML available to the **python3** interpreter launched by the app
|
|
- Internet access on first Xcode build to resolve the Yams Swift package
|
|
|
|
## Open and build
|
|
1. Open `AppleContainerCompose.xcodeproj` in Xcode.
|
|
2. Select the `AppleContainerCompose` scheme and `My Mac` destination.
|
|
3. Build and run (Command-R).
|
|
4. Click **Open YAML** and choose a Compose file (sample in `Examples/compose.yaml`).
|
|
5. Use **Up**, **Down**, **Status**, **Logs**, **Restart**, **Pull Images**, or **Build Images**.
|
|
|
|
## Python dependency
|
|
The bundled engine imports PyYAML. Install it for the Python interpreter available in your macOS app's PATH. For example, using Homebrew Python:
|
|
|
|
```sh
|
|
brew install python
|
|
/opt/homebrew/bin/python3 -m venv ~/.local/share/accompose-venv
|
|
~/.local/share/accompose-venv/bin/pip install PyYAML
|
|
```
|
|
|
|
The current app executes `python3` from PATH, not the venv automatically. Install PyYAML into that interpreter, or modify `executeEngine` to use `~/.local/share/accompose-venv/bin/python` (recommended for isolated dependencies).
|
|
|
|
## Current implementation scope
|
|
- Native Xcode project with SwiftUI project browser, service summary, and command output
|
|
- Compose YAML parsing for service listing using Yams
|
|
- Bundled MVP engine: up/down, start/stop/restart, ps/logs, build/pull, state, dependencies, networks and volumes
|
|
- App process runs without macOS sandbox because it invokes the host's container CLI
|
|
|
|
## Limitations
|
|
This is a development prototype, not a fully native orchestration engine or production-grade Docker Compose replacement. Runtime integration is not tested on macOS here. The Python engine requires PyYAML; service status is currently based on project state; logs are batch output, not continuous streaming; health checks, advanced Compose compatibility, restart supervision, service scaling and secure secrets management remain future work. The UI's restart action restarts the whole project. Consult Apple's `container` version for supported CLI flags.
|