exec method
Future<DockerProcess?>
exec(
- String containerName,
- String command,
- List<
String> args, { - bool outputAsLines = true,
- int? outputLimit,
- OutputReadyFunction? stdoutReadyFunction,
- OutputReadyFunction? stderrReadyFunction,
- OutputReadyType? outputReadyType,
override
Executes a command
inside containerName
with args
.
Implementation
@override
Future<DockerProcess?> exec(
String containerName,
String command,
List<String> args, {
bool outputAsLines = true,
int? outputLimit,
OutputReadyFunction? stdoutReadyFunction,
OutputReadyFunction? stderrReadyFunction,
OutputReadyType? outputReadyType,
}) async {
var argsEncoded = args.isNotEmpty ? encodeJSON(args) : null;
var response = await _httpClient.getJSON('exec', parameters: {
'cmd': command,
if (argsEncoded != null) 'args': argsEncoded,
'name': containerName,
'outputAsLines': '$outputAsLines',
'outputLimit': '$outputLimit',
}) as Map?;
if (response == null) return null;
var instanceID = response['instanceID'] as int;
containerName = response['containerName'] as String;
outputReadyType ??= DockerHost.resolveOutputReadyType(
stdoutReadyFunction, stderrReadyFunction);
stdoutReadyFunction ??= (outputStream, data) => true;
stderrReadyFunction ??= (outputStream, data) => true;
var dockerProcess = DockerProcessRemote(
this,
instanceID,
containerName,
outputLimit,
outputAsLines,
stdoutReadyFunction,
stderrReadyFunction,
outputReadyType);
_processes[instanceID] = dockerProcess;
var ok = await _initializeAndWaitReady(dockerProcess);
if (ok) {
_log.info('Exec[$ok]: $dockerProcess');
}
return dockerProcess;
}