Как запустить docker exec с помощью Java в контейнере Docker

У меня есть докер-контейнер pps-control. Если я хочу выполнить сценарий, который находится внутри контейнера, который в этом примере принимает 1 аргумент, я делаю это из своего терминала Linux:

docker exec pps-control /bin/sh -c "./build/doControlStuff.sh 123456"

Мой вопрос: Как добиться того же с помощью кода Java? Я знаю, что есть что-то вроде:

package com.mypackage;
import static com.palantir.docker.compose.execution.DockerComposeExecArgument.arguments;
import static com.palantir.docker.compose.execution.DockerComposeExecOption.options;
import com.palantir.docker.compose.DockerComposeRule;

public class TestClass {
    public static DockerComposeRule docker;
    public static void testMethod() {
        docker.exec(options(), "pps-control", arguments("bash", "-c", "./build/doControlStuff.sh 123456"));
    }
}

Но не смог понять, как его использовать (с правильным синтаксисом), любая помощь будет оценена с помощью примера фактический код, спасибо!

My Docker version is 18.03.0-ce, build 0520e24

Какая у вас проблема? Какую версию Docker вы используете? Что такое option и args?

dpwr 30.04.2018 15:55

@dpwrussell, Docker версии 18.03.0-ce, сборка 0520e24

Saffik 30.04.2018 16:09

Что за ошибка?

dpwr 30.04.2018 17:35

@dpwrussell: java.lang.NullPointerException

Saffik 30.04.2018 17:48

@dpwrussell: вызвано ReflectiveCallable.InvocationTargetException

Saffik 30.04.2018 17:58

Пожалуйста, опубликуйте полную трассировку стека

dpwr 30.04.2018 18:09

@dpwrussell: я получаю только java.lang.NullPointerException в com.mypackage.TestClass.testMethod (TestClass.java:9)

Saffik 30.04.2018 18:18

Привет, удалось ли вам решить эту проблему?

user1147070 09.08.2018 11:59

@ user1147070 - Да, я сделал следующее: private static DockerComposeExecOption option = DockerComposeExecOption.noOptions(); ... DockerComposeExecArgument args = DockerComposeExecArgument.arguments("bash", "-c", "./build/doControlStuff.sh 123456"); ... docker.exec(option, "pps-control", args);

Saffik 09.08.2018 14:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
9
486
1

Ответы 1

Я думаю, ваш последний аргумент должен быть «\» build / doControlStuff.sh 123456 \ »».

Другие вопросы по теме