TIL - 20.12.22

less than 1 minute read

[Testcontainers] Error - 설치 시

  • 에러메시지
Caused by: com.github.dockerjava.api.exception.NotFoundException: {"message":"No such image: quay.io/testcontainers/ryuk:0.2.3"}
java.lang.NoSuchMethodError: org.testcontainers.utility.DockerImageName.parse(Ljava/lang/String;)

image-20201223011842065

image-20201223011759264

  • 해결

    testcontainers junit5 지원모듈 버전과 postgresql 버전을 최신버전으로 변경해줬더니 잘 됨. (이전에 1.13.0 버전이었음)


[Testcontainers] Error - withExposedPorts() 포트매핑 에러

withExposedPorts(포트번호)만 지정한 경우 포트가 매핑이 안되고 테스트에 실패함

  • 오류메시지

    // 계속 시도 중인 것 처럼 무한 출력
    12:58:36.072 [ducttape-0] DEBUG org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: e17cb9b0424afd5f3f5466f3747fc4fee31d6a3809b14c6ad789266def7fa221,<null>,true,true,<null>,<null>,<null>,{/bin/sh,-c,true &&  (cat /proc/net/tcp* | awk '{print $2}' | grep -i ':0*1e61' || nc -vz -w 1 localhost 7777 || /bin/bash -c '</dev/tcp/localhost/7777') &&  (cat /proc/net/tcp* | awk '{print $2}' | grep -i ':0*1538' || nc -vz -w 1 localhost 5432 || /bin/bash -c '</dev/tcp/localhost/5432')},<null>,<null>
    
    org.testcontainers.containers.ContainerLaunchException: Container startup failed
      
    	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:330)
    	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:311)
    

    검색 - “genericcontainer with exposed ports error”

  • 해결 답변

  • 해결

    대기 전략을 재정의하면 효과가 있습니까? 포트 검사 전략이 컨테이너 내부에서 포트를 확인하는 일부 임원을 실행하므로 포트 검사 전략으로 인해 발생한 것 같습니다.

    포트 대기 코드 추가 - .waitingFor()

@Container
static GenericContainer postgreSQLContainer = new GenericContainer("postgres")
  .withEnv("POSTGRES_DB", "studytest")
  .withExposedPorts(5432, 7777).waitingFor(new WaitStrategy() {
  @Override
  public void waitUntilReady(WaitStrategyTarget waitStrategyTarget) {

  }

  @Override
  public WaitStrategy withStartupTimeout(Duration startupTimeout) {
    return null;
  }
});