createContainer method
Future<ContainerInfos?>
createContainer(
- String containerName,
- String imageName, {
- String? version,
- List<
String> ? ports, - String? network,
- String? hostname,
- Map<
String, String> ? environment, - Map<
String, String> ? volumes, - bool cleanContainer = false,
- String? healthCmd,
- Duration? healthInterval,
- int? healthRetries,
- Duration? healthStartPeriod,
- Duration? healthTimeout,
- String? restart,
- DockerRunOptions? options,
override
Creates a Docker containers with image and optional version.
Implementation
@override
Future<ContainerInfos?> createContainer(
String containerName,
String imageName, {
String? version,
List<String>? ports,
String? network,
String? hostname,
Map<String, String>? environment,
Map<String, String>? volumes,
bool cleanContainer = false,
String? healthCmd,
Duration? healthInterval,
int? healthRetries,
Duration? healthStartPeriod,
Duration? healthTimeout,
String? restart,
DockerRunOptions? options,
}) async {
if (isEmptyString(containerName, trim: true)) {
return null;
}
var runOptions = defaultRunOptions.merge(DockerHost.resolveRunOptions(
ports: ports,
network: network,
hostname: hostname,
environment: environment,
volumes: volumes,
cleanContainer: cleanContainer,
healthCmd: healthCmd,
healthInterval: healthInterval,
healthRetries: healthRetries,
healthStartPeriod: healthStartPeriod,
healthTimeout: healthTimeout,
restart: restart,
options: options,
));
var containerInfos = buildContainerArgsWithOptions(
'create',
imageName,
version,
containerName,
runOptions,
addCIDFile: true,
);
var cmdArgs = containerInfos.args!;
_log.info('create[CMD]>\t$dockerBinaryPath ${cmdArgs.join(' ')}');
var process = await Process.start(dockerBinaryPath!, cmdArgs);
var exitCode = await process.exitCode;
if (exitCode != 0) return null;
containerInfos.id = await _readContainerID(
containerInfos.containerName, containerInfos.idFile, process);
return exitCode == 0 ? containerInfos : null;
}