diff --git a/src/main/scala/com/tapad/docker/DockerCommands.scala b/src/main/scala/com/tapad/docker/DockerCommands.scala index 24f11b3..f6b8c3a 100644 --- a/src/main/scala/com/tapad/docker/DockerCommands.scala +++ b/src/main/scala/com/tapad/docker/DockerCommands.scala @@ -41,11 +41,16 @@ trait DockerCommands { Process(s"docker-machine ip $machineName").!!.trim } - def getDockerContainerId(instanceName: String, serviceName: String): String = { + def getDockerContainerIdLegacy(instanceName: String, serviceName: String): String = { //Docker replaces '/' with '_' in the identifier string so search for replaced version Process(s"""docker ps --all --filter=name=${instanceName.replace('/', '_')}_${serviceName}_ --format=\"{{.ID}}\"""").!!.trim().replaceAll("\"", "") } + def getDockerContainerId(instanceName: String, serviceName: String): String = { + // support for V2 Docker Compose API https://github.com/docker/compose#about-update-and-backward-compatibility + Process(s"""docker ps --all --filter=name=${instanceName.replace('/', '_')}-${serviceName}-1 --format=\"{{.ID}}\"""").!!.trim().replaceAll("\"", "") + } + def getDockerContainerInfo(containerId: String): String = { Process(s"docker inspect --type=container $containerId").!! } diff --git a/src/main/scala/com/tapad/docker/DockerComposePlugin.scala b/src/main/scala/com/tapad/docker/DockerComposePlugin.scala index 396763d..1624bdf 100644 --- a/src/main/scala/com/tapad/docker/DockerComposePlugin.scala +++ b/src/main/scala/com/tapad/docker/DockerComposePlugin.scala @@ -569,13 +569,15 @@ class DockerComposePluginLocal extends AutoPlugin with ComposeFile with DockerCo if (verbose) print(s"Waiting for container Id to be available for service '$serviceName' time remaining: ${deadline.timeLeft.toSeconds}") + val containerIdLegacy = getDockerContainerIdLegacy(instanceName, serviceName) val containerId = getDockerContainerId(instanceName, serviceName) + val finalContainerId = if (containerIdLegacy.isEmpty) containerId else containerIdLegacy - if (containerId.isEmpty) { + if (finalContainerId.isEmpty) { Thread.sleep(2000) tryGetContainerId(state, instanceName, serviceName, deadline) } else { - Some(containerId) + Some(finalContainerId) } } case false => None