21 Ekim 2021 Perşembe

SpringTest Testcontainers Veri Tabanı Hazırlama

Örnek
Açıklaması şöyle
This custom specialization of the MySQLContainer builds a container based on mysql:latest, with a new schema HR, a user ‘docker’ and runs a setup script from src/test/resources/sql upon container startup.
Şöyle yaparız
import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.MySQLContainer;

public class TestDBContainer extends MySQLContainer {

  public OurSQLContainer() {
    super("mysql:latest");
    withDatabaseName("HR")
      .withUsername("docker")
      .withPassword("docker")
      .withClasspathResourceMapping("sql/setup.sql", "/docker-entrypoint-initdb.d/", BindMode.READ_ONLY);
    }
}
Ama veri tabanını doldurmak uzun sürüyorsak kendi imajımızı hazırlarız. Şöyle yaparız
FROM mysql:latest

ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=hr
ENV MYSQL_USER=docker
ENV MYSQL_PASSWORD=docker

COPY ./setup.sql /docker-entrypoint-initdb.d/

# necessary to persist the new database state when we commit the container
RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

CMD ["--datadir", "/var/lib/mysql-no-volume"]
Daha sonra bunu kullanırız. Şöyle yaparız
super(DockerImageName.parse("testdb:latest").asCompatibleSubstituteFor("mysql"));


Hiç yorum yok:

Yorum Gönder