dockerRunBuilder function
Runs a Docker container with specified parameters.
containerName
- The name/tag of the container to run
version
- The version parameter to pass to the container
outputDirectory
- The directory to mount as /output in the container
Runs the container with GPU support and mounts the output directory.
Implementation
Future<void> dockerRunBuilder(
String containerName,
String version,
String outputDirectory,
) async {
// Ensure output directory exists
final outputDir = Directory(outputDirectory);
await outputDir.create(recursive: true);
print('Running Docker container: $containerName');
print('Version: $version');
print('Output directory: ${outputDir.absolute.path}');
// Run docker run command with GPU support and volume mount
final result = await Process.run('docker', [
'run',
'--rm',
'--gpus',
'all',
'-v',
'${outputDir.absolute.path}:/output',
containerName,
version,
]);
if (result.exitCode != 0) {
throw Exception(
'Docker run failed with exit code ${result.exitCode}:\n'
'stdout: ${result.stdout}\n'
'stderr: ${result.stderr}',
);
}
print('Docker container completed successfully');
if (result.stdout.toString().isNotEmpty) {
print('Container output:\n${result.stdout}');
}
}