IntelliJ test container + Rancher

신연우·2024년 8월 3일

WIL

목록 보기
14/21

배경

ElasticSearch를 사용하고 있는 프로젝트에서 테스트를 돌리기 위해 docker를 띄워야 되는 상황이었습니다. Docker Desktop이 유료화되면서 Rancher Desktop을 사용하고 있는 상황이었습니다.

테스트를 실행하였으나 아래와 같은 오류가 발생하며 테스트가 실행되지 못했습니다.

Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
	at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7(DockerClientProviderStrategy.java:276)	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:267)
	at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:150)
	at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:191)
	at org.testcontainers.DockerClientFactory$1.getDockerClient(DockerClientFactory.java:104)
	at com.github.dockerjava.api.DockerClientDelegate.authConfig(DockerClientDelegate.java:109)
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:321)
    ...

해결

해당 프로젝트에서는 TestContainer를 사용해 ElasticSearch를 사용하고 있었습니다. 이 경우 IntelliJ에서 docker와 통신할 수 있는 구조가 갖춰져야 하는데요. 실패했을 당시 제 IDE 상태는 아래와 같이 docker에 연결을 할 수 없는 상황이었습니다.

통신에 실패한 이유는 IntelliJ가 바라보는 docker.sock 파일이 있는 경로가 /var/run입니다. 그러나 Rancher desktop이 실행될 때 docker.sock 파일 위치는 해당 경로에 위치하지 않습니다.

sudo ln -s ~$USER/.rd/docker.sock /var/run/docker.sock

따라서, 위 명령을 사용해 IntelliJ에서 바라보는 경로에 심볼릭 링크를 만들어주면 정상적으로 테스트를 실행할 수 있습니다.

profile
남들과 함께하기 위해서는 혼자 나아갈 수 있는 힘이 있어야 한다.

0개의 댓글