Build and run from the SDK
DockerResult handles with wait(), success, stdout, stderr, and combined logs(). Unlike process.logs, Docker’s logs() is a method. Build progress often appears on stderr.
The SDK Docker helpers use the VM’s network namespace. Publish the service’s actual listening port with vm.expose(); SDK host-port remapping is unsupported. Direct commands issued through SSH or vm.process.exec("docker", ...) use normal guest Docker behavior and need their own Docker networking configuration.
Compose from the CLI
Upload your project, then run Compose inside the VM:ports or host networking in your Compose file so the application is reachable on the VM’s published port.
Compose from the SDK
The SDK Compose helpers apply the shared host-network/PID configuration and reuse the same configuration for subsequent stack operations:vm.aio.docker for async calls.
For long builds on an idle-limited VM, hold vm.keep_alive() or disable the TTL. For daemon diagnostics, use beam vm logs docker-dev --unit docker.service.