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