All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gesellix.gradle.docker.tasks.DockerExecTask.groovy Maven / Gradle / Ivy

package de.gesellix.gradle.docker.tasks

import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction

class DockerExecTask extends GenericDockerTask {

    @Input
    def containerId
    @Input
    def commandLine

    @Internal
    def result

    DockerExecTask() {
        description = "Run a command in a running container"
        group = "Docker"
    }

    @TaskAction
    def exec() {
        logger.info "docker exec"

        def execCreateConfig = [
                "AttachStdin" : false,
                "AttachStdout": true,
                "AttachStderr": true,
                "Tty"         : false,
                "Cmd"         : getCommandLine()
        ]
        if (!(getCommandLine() instanceof Collection)) {
            String[] cmd = ['sh', '-c', getCommandLine()?.toString()]
            execCreateConfig.Cmd = cmd
        }
        logger.debug("exec cmd: '${execCreateConfig.Cmd}'")
        def execCreateResult = dockerClient.createExec(getContainerId(), execCreateConfig)

        def execStartConfig = [
                "Detach": false,
                "Tty"   : false]
        result = dockerClient.startExec(execCreateResult.content.Id, execStartConfig)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy