package org.testcontainers.containers; /** * Container implementation for the MariaDB project. * * @author Miguel Gonzalez Sanchez */ public class MariaDBContainer<SELF extends MariaDBContainer<SELF>> extends JdbcDatabaseContainer<SELF> { public static final String NAME = "mariadb"; public static final String IMAGE = "mariadb"; private static final Integer MARIADB_PORT = 3306; private static final String MARIADB_USER = "test"; private static final String MARIADB_PASSWORD = "test"; private static final String MARIADB_DATABASE = "test"; private static final String MY_CNF_CONFIG_OVERRIDE_PARAM_NAME = "TC_MY_CNF"; public MariaDBContainer() { super(IMAGE + ":latest"); } public MariaDBContainer(String dockerImageName) { super(dockerImageName); } @Override protected Integer getLivenessCheckPort() { return getMappedPort(MARIADB_PORT); } @Override protected void configure() { optionallyMapResourceParameterAsVolume(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME, "/etc/mysql/conf.d", "mariadb-default-conf"); addExposedPort(MARIADB_PORT); addEnv("MYSQL_DATABASE", MARIADB_DATABASE); addEnv("MYSQL_USER", MARIADB_USER); addEnv("MYSQL_PASSWORD", MARIADB_PASSWORD); addEnv("MYSQL_ROOT_PASSWORD", MARIADB_PASSWORD); setCommand("mysqld"); setStartupAttempts(3); } @Override public String getDriverClassName() { return "org.mariadb.jdbc.Driver"; } @Override public String getJdbcUrl() { return "jdbc:mariadb://" + getContainerIpAddress() + ":" + getMappedPort(MARIADB_PORT) + "/test"; } @Override public String getUsername() { return MARIADB_USER; } @Override public String getPassword() { return MARIADB_PASSWORD; } @Override public String getTestQueryString() { return "SELECT 1"; } public SELF withConfigurationOverride(String s) { parameters.put(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME, s); return self(); } }