How to use runInsideDocker method of org.testcontainers.DockerClientFactory class

Best Testcontainers-java code snippet using org.testcontainers.DockerClientFactory.runInsideDocker

Source:DockerClientFactory.java Github

copy

Full Screen

...182 checkDockerVersion(version.getVersion());183 if (ryukContainerId != null) {184 checkDiskSpace(client, ryukContainerId);185 } else {186 runInsideDocker(187 client,188 createContainerCmd -> {189 createContainerCmd.withName("testcontainers-checks-" + SESSION_ID);190 createContainerCmd.getHostConfig().withAutoRemove(true);191 createContainerCmd.withCmd("tail", "-f", "/dev/null");192 },193 (__, containerId) -> {194 checkDiskSpace(client, containerId);195 return "";196 }197 );198 }199 } catch (RuntimeException e) {200 cachedClientFailure = e;201 throw e;202 }203 } else {204 log.debug("Checks are disabled");205 }206 dockerClient = client;207 return dockerClient;208 }209 private void checkDockerVersion(String dockerVersion) {210 boolean versionIsSufficient = new ComparableVersion(dockerVersion).compareTo(new ComparableVersion("1.6.0")) >= 0;211 check("Docker server version should be at least 1.6.0", versionIsSufficient);212 }213 private void checkDiskSpace(DockerClient dockerClient, String id) {214 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();215 try {216 dockerClient217 .execStartCmd(dockerClient.execCreateCmd(id).withAttachStdout(true).withCmd("df", "-P").exec().getId())218 .exec(new ResultCallback.Adapter<Frame>() {219 @Override220 public void onNext(Frame frame) {221 if (frame == null) {222 return;223 }224 switch (frame.getStreamType()) {225 case RAW:226 case STDOUT:227 try {228 outputStream.write(frame.getPayload());229 outputStream.flush();230 } catch (IOException e) {231 onError(e);232 }233 }234 }235 })236 .awaitCompletion();237 } catch (Exception e) {238 log.debug("Can't exec disk checking command", e);239 }240 DiskSpaceUsage df = parseAvailableDiskSpace(outputStream.toString());241 check(242 "Docker environment should have more than 2GB free disk space",243 df.availableMB.map(it -> it >= 2048).orElse(true)244 );245 }246 private void check(String message, boolean isSuccessful) {247 if (isSuccessful) {248 log.info("\u2714\ufe0e {}", message);249 } else {250 log.error("\u274c {}", message);251 throw new IllegalStateException("Check failed: " + message);252 }253 }254 private boolean checkMountableFile() {255 DockerClient dockerClient = client();256 MountableFile mountableFile = MountableFile.forClasspathResource(ResourceReaper.class.getName().replace(".", "/") + ".class");257 Volume volume = new Volume("/dummy");258 try {259 return runInsideDocker(260 createContainerCmd -> createContainerCmd.withBinds(new Bind(mountableFile.getResolvedPath(), volume, AccessMode.ro)),261 (__, containerId) -> {262 try (InputStream stream = dockerClient.copyArchiveFromContainerCmd(containerId, volume.getPath()).exec()) {263 stream.read();264 return true;265 } catch (Exception e) {266 return false;267 }268 }269 );270 } catch (Exception e) {271 log.debug("Failure while checking for mountable file support", e);272 return false;273 }274 }275 /**276 * Check whether the image is available locally and pull it otherwise277 */278 @SneakyThrows279 public void checkAndPullImage(DockerClient client, String image) {280 try {281 client.inspectImageCmd(image).exec();282 } catch (NotFoundException notFoundException) {283 PullImageCmd pullImageCmd = client.pullImageCmd(image);284 try {285 pullImageCmd.exec(new TimeLimitedLoggedPullImageResultCallback(log)).awaitCompletion();286 } catch (DockerClientException e) {287 // Try to fallback to x86288 pullImageCmd289 .withPlatform("linux/amd64")290 .exec(new TimeLimitedLoggedPullImageResultCallback(log))291 .awaitCompletion();292 }293 }294 }295 /**296 * @return the IP address of the host running Docker297 */298 public String dockerHostIpAddress() {299 return getOrInitializeStrategy().getDockerHostIpAddress();300 }301 public <T> T runInsideDocker(Consumer<CreateContainerCmd> createContainerCmdConsumer, BiFunction<DockerClient, String, T> block) {302 // We can't use client() here because it might create an infinite loop303 return runInsideDocker(getOrInitializeStrategy().getDockerClient(), createContainerCmdConsumer, block);304 }305 private <T> T runInsideDocker(DockerClient client, Consumer<CreateContainerCmd> createContainerCmdConsumer, BiFunction<DockerClient, String, T> block) {306 final String tinyImage = ImageNameSubstitutor.instance().apply(TINY_IMAGE).asCanonicalNameString();307 checkAndPullImage(client, tinyImage);308 CreateContainerCmd createContainerCmd = client.createContainerCmd(tinyImage)309 .withLabels(DEFAULT_LABELS);310 createContainerCmdConsumer.accept(createContainerCmd);311 String id = createContainerCmd.exec().getId();312 try {313 client.startContainerCmd(id).exec();314 return block.apply(client, id);315 } finally {316 try {317 client.removeContainerCmd(id).withRemoveVolumes(true).withForce(true).exec();318 } catch (NotFoundException | InternalServerErrorException e) {319 log.debug("Swallowed exception while removing container", e);...

Full Screen

Full Screen

Source:DockerClientFactoryTest.java Github

copy

Full Screen

...17 dockFactory.client().removeImageCmd(TestcontainersConfiguration.getInstance().getTinyImage()).withForce(true).exec();18 } catch (NotFoundException ignored) {19 // Do not fail if it's not pulled yet20 }21 dockFactory.runInsideDocker(( cmd) -> cmd.withCmd("sh", "-c", "echo 'SUCCESS'"), ( client, id) -> client.logContainerCmd(id).withStdOut(true).exec(new LogToStringContainerCallback()).toString());22 }23 @Test24 public void shouldHandleBigDiskSize() throws Exception {25 String dfOutput = "/dev/disk1 2982480572 1491240286 2982480572 31% /";26 DiskSpaceUsage usage = DockerClientFactory.instance().parseAvailableDiskSpace(dfOutput);27 VisibleAssertions.assertEquals("Available MB is correct", (2982480572L / 1024L), usage.availableMB.orElse(0L));28 VisibleAssertions.assertEquals("Available percentage is correct", 31, usage.usedPercent.orElse(0));29 }30}...

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.containers.GenericContainer;3import org.testcontainers.containers.output.OutputFrame;4import org.testcontainers.containers.output.ToStringConsumer;5import org.testcontainers.containers.output.WaitingConsumer;6import org.testcontainers.containers.wait.strategy.Wait;7import org.testcontainers.images.builder.ImageFromDockerfile;8import java.io.File;9import java.time.Duration;10import java.util.concurrent.TimeUnit;11public class 1 {12 public static void main(String[] args) throws Exception {13 DockerClientFactory.instance().runInsideDocker(14 client -> {15 ImageFromDockerfile image = new ImageFromDockerfile()16 .withFileFromFile(".", new File("Dockerfile"));17 GenericContainer container = new GenericContainer(image)18 .withCommand("sleep", "60")19 .withExposedPorts(80)20 .waitingFor(Wait.forHttp("/").forPort(80).forStatusCode(200).withStartupTimeout(Duration.ofMinutes(2)));21 container.start();22 WaitingConsumer waitingConsumer = new WaitingConsumer();23 container.followOutput(waitingConsumer, OutputFrame.OutputType.STDOUT);24 waitingConsumer.waitUntil(frame -> frame.getUtf8String().contains("Started Application in"), 2, TimeUnit.MINUTES);25 ToStringConsumer toStringConsumer = new ToStringConsumer();26 container.followOutput(toStringConsumer, OutputFrame.OutputType.STDOUT);27 System.out.println(toStringConsumer.toUtf8String());28 container.stop();29 }30 );31 }32}

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.containers.GenericContainer;3import org.testcontainers.containers.output.OutputFrame;4import org.testcontainers.containers.output.ToStringConsumer;5import org.testcontainers.containers.output.WaitingConsumer;6import org.testcontainers.utility.MountableFile;7import java.io.File;8import java.io.IOException;9import java.util.concurrent.TimeUnit;10public class 1 {11 public static void main(String[] args) throws IOException, InterruptedException {12 DockerClientFactory.instance().runInsideDocker((dockerClient, containerId) -> {13 GenericContainer container = new GenericContainer("alpine:3.8")14 .withCommand("tail", "-f", "/dev/null")15 .withFileSystemBind("/home/1", "/home/1", BindMode.READ_WRITE)16 .withCopyFileToContainer(MountableFile.forClasspathResource("1"), "/home/1/1");17 container.start();18 WaitingConsumer consumer = new WaitingConsumer();19 container.followOutput(consumer);20 consumer.waitUntil(frame -> frame.getUtf8String().contains("1"), 10, TimeUnit.SECONDS);21 String output = consumer.toUtf8String();22 System.out.println(output);23 container.stop();24 });25 }26}27public class 1 {28 public static void main(String[] args) {29 System.out.println("1");30 }31}32DockerClientFactory.instance().runInsideDocker((dockerClient, containerId) -> {33 GenericContainer container = new GenericContainer("alpine:3.8")34 .withCommand("tail", "-f", "/dev/null")35 .withFileSystemBind("/home/1", "/home/1", BindMode.READ_WRITE)36 .withCopyFileToContainer(MountableFile.forClasspathResource("1"), "/home/1/1");37 container.start();38 WaitingConsumer consumer = new WaitingConsumer();39 container.followOutput(consumer);40 consumer.waitUntil(frame -> frame.getUtf8String().contains("1"), 10, TimeUnit.SECONDS);

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.containers.GenericContainer;3import org.testcontainers.containers.output.OutputFrame;4import org.testcontainers.containers.output.ToStringConsumer;5import org.testcontainers.containers.wait.strategy.Wait;6import org.testcontainers.images.builder.ImageFromDockerfile;7import java.io.File;8import java.io.IOException;9import java.util.concurrent.TimeUnit;10public class DockerClientFactoryTest {11 public static void main(String[] args) throws IOException, InterruptedException {12 ImageFromDockerfile image = new ImageFromDockerfile()13 .withDockerfileFromBuilder(builder -> builder14 .from("alpine:3.10")15 .run("apk add --update openjdk8-jre")16 .run("apk add --update bash")17 .run("apk add --update curl")18 .run("apk add --update unzip")19 .run("apk add --update wget")20 .run("apk add --update maven")21 .run("apk add --update git")22 .run("mkdir /opt/jenkins")23 .run("java -jar /opt/jenkins/jenkins.war --httpPort=8080")24 .build());25 image.setDockerfile(new File("Dockerfile"));26 GenericContainer container = new GenericContainer(image)27 .withExposedPorts(8080)28 .waitingFor(Wait.forHttp("/").forPort(8080).withStartupTimeout(TimeUnit.MINUTES.toMillis(2)));29 container.setCommand("sh", "-c", "tail -f /dev/null");30 container.start();

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.utility.DockerImageName;3public class Test {4 public static void main(String[] args) {5 DockerClientFactory.instance().runInsideDocker(() -> {6 System.out.println("Hello World");7 }, DockerImageName.parse("alpine:3.11.3"));8 }9}

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2public class 1 {3 public static void main(String[] args) {4 DockerClientFactory.instance().runInsideDocker(() -> {5 System.out.println("Hello World!");6 });7 }8}

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.shaded.com.github.dockerjava.api.DockerClient;3import org.testcontainers.shaded.com.github.dockerjava.api.command.ExecCreateCmdResponse;4import org.testcontainers.shaded.com.github.dockerjava.api.command.ExecStartResultCallback;5import org.testcontainers.shaded.com.github.dockerjava.api.model.Frame;6import org.testcontainers.shaded.com.github.dockerjava.core.command.ExecStartResultCallbackTemplate;7public class TestDockerClientFactory {8 public static void main(String[] args) {9 DockerClient dockerClient = DockerClientFactory.instance().client();10 .execCreateCmd("f6f90b0e3d3f")11 .withAttachStdout(true)12 .withAttachStderr(true)13 .withCmd("ls", "-l")14 .exec();15 .execStartCmd(execCreateCmdResponse.getId())16 .exec(new ExecStartResultCallback());17 System.out.println("Output of command is: " + execStartResultCallback.toString());18 }19}

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.containers.GenericContainer;3public class TestContainer {4 public static void main(String[] args) {5 DockerClientFactory.instance().runInsideDocker(6 client -> {7 try (GenericContainer container = new GenericContainer("alpine:3.3") {{8 withCommand("sleep", "9999");9 }}) {10 container.start();11 System.out.println(container.getLogs());12 }13 }14 );15 }16}

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2public class DockerClientFactoryTest {3 public static void main(String[] args) {4 DockerClientFactory.instance().runInsideDocker(() -> {5 System.out.println("running inside docker");6 return null;7 });8 }9}10import org.testcontainers.DockerClientFactory;11public class DockerClientFactoryTest {12 public static void main(String[] args) {13 DockerClientFactory.instance().runInsideDocker(() -> {14 System.out.println("running inside docker");15 return null;16 });17 }18}19 DockerClientProviderStrategy: 'org.testcontainers.dockerclient.AwsEcsDockerClientProviderStrategy' (org.testcontainers.shaded.com.github.dockerjava.core.DefaultDockerClientConfig@6

Full Screen

Full Screen

runInsideDocker

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.DockerClientFactory;2import org.testcontainers.utility.DockerClientConfig;3public class 1 {4 public static void main(String[] args) {5 DockerClientConfig config = DockerClientConfig.builder()6 .withDockerTlsVerify(false)7 .withDockerCertPath(null)8 .withApiVersion("1.40")9 .withRegistryUsername(null)10 .withRegistryPassword(null)11 .withRegistryEmail(null)12 .withRegistryUrl(null)13 .build();14 DockerClientFactory.instance().runInsideDocker(config, () -> {15 System.out.println("Inside Docker");16 return null;17 });18 }19}20import org.testcontainers.DockerClientFactory;21import org.testcontainers.utility.DockerClientConfig;22public class 2 {23 public static void main(String[] args) {24 DockerClientConfig config = DockerClientConfig.builder()25 .withDockerTlsVerify(false)26 .withDockerCertPath(null)27 .withApiVersion("1.40")28 .withRegistryUsername(null)29 .withRegistryPassword(null)30 .withRegistryEmail(null)31 .withRegistryUrl(null)32 .build();33 DockerClientFactory.instance().runInsideDocker(config, () -> {34 System.out.println("Inside Docker");35 return null;36 });37 }38}39import org.testcontainers.DockerClientFactory;40import org.testcontainers.utility.DockerClientConfig;41public class 3 {42 public static void main(String[] args) {43 DockerClientConfig config = DockerClientConfig.builder()

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful