buildContainerArgs method

ContainerInfos buildContainerArgs(
  1. String cmd,
  2. String imageName,
  3. String? version,
  4. String containerName,
  5. List<String>? ports,
  6. String? network,
  7. String? hostname,
  8. Map<String, String>? environment,
  9. Map<String, String>? volumes,
  10. bool cleanContainer,
  11. String? healthCmd,
  12. Duration? healthInterval,
  13. int? healthRetries,
  14. Duration? healthStartPeriod,
  15. Duration? healthTimeout,
  16. String? restart,
)

Implementation

ContainerInfos buildContainerArgs(
  String cmd,
  String imageName,
  String? version,
  String containerName,
  List<String>? ports,
  String? network,
  String? hostname,
  Map<String, String>? environment,
  Map<String, String>? volumes,
  bool cleanContainer,
  String? healthCmd,
  Duration? healthInterval,
  int? healthRetries,
  Duration? healthStartPeriod,
  Duration? healthTimeout,
  String? restart,
) {
  var image = DockerHost.resolveImage(imageName, version);

  ports = DockerHost.normalizeMappedPorts(ports);

  var args = <String>[
    if (isNotEmptyString(cmd)) cmd,
    '--name',
    containerName,
  ];

  if (cleanContainer) {
    args.add('--rm');
  }

  if (isNotEmptyString(restart, trim: true)) {
    restart = restart!.trim();
    args.add('--restart');
    args.add(restart);
  }

  if (ports != null) {
    for (var pair in ports) {
      args.add('-p');
      args.add(pair);
    }
  }

  String? containerNetwork;

  if (isNotEmptyString(network, trim: true)) {
    containerNetwork = network!.trim();
    args.add('--net');
    args.add(containerNetwork);
  }

  String? containerHostname;

  if (isNotEmptyString(hostname, trim: true)) {
    containerHostname = hostname!.trim();
    args.add('-h');
    args.add(containerHostname);
  }

  volumes?.forEach((k, v) {
    if (isNotEmptyString(k) && isNotEmptyString(k)) {
      args.add('-v');
      args.add('$k:$v');
    }
  });

  environment?.forEach((k, v) {
    if (isNotEmptyString(k)) {
      args.add('-e');
      args.add('$k=$v');
    }
  });

  args.add(image);

  return ContainerInfos(containerName, null, image, ports, containerNetwork,
      containerHostname, args);
}