From 6a4badbd829eab7618a1ca08d95bb4b7082d381d Mon Sep 17 00:00:00 2001 From: az Date: Mon, 29 Nov 2021 14:53:20 +0100 Subject: [PATCH] [skip ci] add options to container start --- .../core/docker/platforms/UbuntuHostDocker.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/core/docker/platforms/UbuntuHostDocker.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/core/docker/platforms/UbuntuHostDocker.kt index db33835..81e4f8d 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/core/docker/platforms/UbuntuHostDocker.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/core/docker/platforms/UbuntuHostDocker.kt @@ -16,15 +16,16 @@ fun UbuntuProv.provideContainerPlatform( containerName: String, imageName: String = "ubuntu", startMode: ContainerStartMode = ContainerStartMode.USE_RUNNING_ELSE_CREATE, - sudo: Boolean = true + sudo: Boolean = true, + options: String = "" ): ProvResult = requireLast { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) if (startMode == ContainerStartMode.CREATE_NEW_KILL_EXISTING) { exitAndRmContainer(containerName) } if ((startMode == ContainerStartMode.CREATE_NEW_KILL_EXISTING) || (startMode == ContainerStartMode.CREATE_NEW_FAIL_IF_EXISTING)) { - if (!cmd(dockerCmd + "run -dit --name=$containerName $imageName").success) { + if (!cmd(dockerCmd + "run -dit $options --name=$containerName $imageName").success) { throw RuntimeException("could not start docker") } } else if (startMode == ContainerStartMode.USE_RUNNING_ELSE_CREATE) { @@ -33,7 +34,7 @@ fun UbuntuProv.provideContainerPlatform( // if either container not found or container found but not running if (!runCheckResult.success || "false\n" == runCheckResult.out) { cmdNoEval(dockerCmd + "rm -f $containerName") - cmd(dockerCmd + "run -dit --name=$containerName $imageName") + cmd(dockerCmd + "run -dit $options --name=$containerName $imageName") } } ProvResult(containerRuns(containerName, sudo)) @@ -41,7 +42,7 @@ fun UbuntuProv.provideContainerPlatform( fun UbuntuProv.containerRunsPlatform(containerName: String, sudo: Boolean = true): Boolean { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) return cmdNoEval(dockerCmd + "inspect -f '{{.State.Running}}' $containerName").out?.equals("true\n") ?: false } @@ -51,19 +52,19 @@ fun UbuntuProv.runContainerPlatform( imageName: String = "ubuntu", sudo: Boolean = true ) = def { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) cmd(dockerCmd + "run -dit --name=$containerName $imageName") } fun UbuntuProv.containerExecPlatform(containerName: String, cmd: String, sudo: Boolean = true) = def { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) cmd(dockerCmd + "exec $containerName $cmd") } fun UbuntuProv.dockerProvideImagePlatform(image: DockerImage, skipIfExisting: Boolean, sudo: Boolean): ProvResult { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) if (skipIfExisting && dockerImageExists(image.imageName())) { return ProvResult(true) @@ -82,7 +83,7 @@ fun UbuntuProv.dockerProvideImagePlatform(image: DockerImage, skipIfExisting: Bo fun UbuntuProv.dockerImageExistsPlatform(imageName: String, sudo: Boolean): Boolean { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) return (cmdNoEval(dockerCmd + "images $imageName -q").out != "") } @@ -92,10 +93,12 @@ fun UbuntuProv.exitAndRmContainerPlatform( containerName: String, sudo: Boolean ) = requireAll { - val dockerCmd = if (sudo) "sudo docker " else "docker " + val dockerCmd = dockerCommand(sudo) if (containerRuns(containerName)) { cmd(dockerCmd + "stop $containerName") } cmd(dockerCmd + "rm $containerName") } + +private fun dockerCommand(sudo: Boolean) = if (sudo) "sudo docker " else "docker "