Run shell commands inside Docker containers for isolated, reproducible execution.
import { DockerTaskRunner } from '@lde/task-runner-docker';
const runner = new DockerTaskRunner({
image: 'ubuntu:latest',
containerName: 'my-task', // Optional container name
mountDir: '/path/to/data', // Optional directory to mount at /mount
port: 8080, // Optional port to expose
});
// Run a command in the container
const container = await runner.run('ls -la /mount');
// Wait for completion
const output = await runner.wait(container);
console.log(output);
// Or stop a running container
await runner.stop(container);| Option | Type | Required | Description |
|---|---|---|---|
image |
string |
Yes | Docker image to use |
containerName |
string |
No | Name for the container (auto-removed on restart) |
mountDir |
string |
No | Host directory to mount at /mount in the container |
port |
number |
No | Port to expose from the container |
docker |
Docker |
No | Custom Dockerode instance |
- Automatically pulls the Docker image before running
- Mounts a host directory as
/mountwith themountDiroption - Runs commands as the current user (UID/GID) for file permissions
- Exposes ports with
portoption - Stops containers (without removing) so logs remain available via
docker logs - Removes previous containers with the same name on restart
- Streams container logs to stdout