Я написал testContainer для Vertica.
public class VerticaContainer extends GenericContainer<VerticaContainer> {
private final int HOST_PORT = 5433;
private final int CONTAINER_PORT = 5433;
private static final String DEFAULT_DOCKER_IMAGE = "jbfavre/vertica:latest";
public VerticaTestContainer() {
this(DEFAULT_DOCKER_IMAGE);
}
public VerticaTestContainer(String dockerImageName) {
super(dockerImageName);
this.addExposedPort(CONTAINER_PORT);
this.addFixedExposedPort(HOST_PORT, CONTAINER_PORT);
}
}
Конфиги Vertica:
VERTICA_DATABASE = "docker"
VERTICA_HOST = "127.0.0.1"
VERTICA_PORT = "5433"
VERTICA_USER = "dbadmin"
VERTICA_PASSWORD = ""
public Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.vertica.jdbc.Driver");
String url = "jdbc:vertica://" + VERTICA_HOST + ":" + VERTICA_PORT + "/" + VERTICA_DATABASE + "?tcpKeepAlive=true";
return DriverManager.getConnection(url, VERTICA_USER, VERTICA_PASSWORD);
}
Отлично работает в локальной среде. Но когда тот же фрагмент кода построен на сервере Jenkins, он не может подключиться к Vertica с ошибкой ниже:
java.sql.SQLNonTransientConnectionException: [Vertica][VJDBC](100176) Failed to connect to host 127.0.0.1 on port 5433. Reason: Failed to establish a connection to the primary server or any backup address.