У меня есть докер-контейнер 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
@dpwrussell, Docker версии 18.03.0-ce, сборка 0520e24
Что за ошибка?
@dpwrussell: java.lang.NullPointerException
@dpwrussell: вызвано ReflectiveCallable.InvocationTargetException
Пожалуйста, опубликуйте полную трассировку стека
@dpwrussell: я получаю только java.lang.NullPointerException в com.mypackage.TestClass.testMethod (TestClass.java:9)
Привет, удалось ли вам решить эту проблему?
@ user1147070 - Да, я сделал следующее: private static DockerComposeExecOption option = DockerComposeExecOption.noOptions(); ... DockerComposeExecArgument args = DockerComposeExecArgument.arguments("bash", "-c", "./build/doControlStuff.sh 123456"); ... docker.exec(option, "pps-control", args);




Я думаю, ваш последний аргумент должен быть «\» build / doControlStuff.sh 123456 \ »».
Какая у вас проблема? Какую версию Docker вы используете? Что такое
optionиargs?