package org.arquillian.cube.containerobject; import com.github.dockerjava.api.DockerClient; import java.io.InputStream; import org.arquillian.cube.HostIp; import org.jboss.arquillian.test.api.ArquillianResource; @Cube(value = "ftp", portBinding = FtpContainer.BIND_PORT + "->21/tcp") @Image("andrewvos/docker-proftpd") @Environment(key = "USERNAME", value = FtpContainer.USERNAME) @Environment(key = "PASSWORD", value = FtpContainer.PASSWORD) public class FtpContainer { static final String USERNAME = "alex"; static final String PASSWORD = "aixa"; static final int BIND_PORT = 2121; @ArquillianResource DockerClient dockerClient; @HostIp String ip; public String getIp() { return ip; } public String getUsername() { return USERNAME; } public String getPassword() { return PASSWORD; } public int getBindPort() { return BIND_PORT; } public boolean isFilePresentInContainer(String filename) { try ( final InputStream file = dockerClient.copyArchiveFromContainerCmd("ftp", "/ftp/" + filename).exec()) { return file != null; } catch (Exception e) { return false; } } }