인프런 커뮤니티 질문&답변
섹션3에 22번째 강의에서 에러발생합니다..
해결된 질문
작성
·
27
·
수정됨
0

환경은 windows 11 64비트이구요,
자바 21, redis는 물론 docker 8.2.1 실행 중이엇구요 하지만
SplitShardedBloomFilterRedisHandlerTest 클래스에 mightContain 테스트 함수 실행 하면 첨부한 이미지 처럼 에러가 출력 됩니다.
아래는 docker 버전 정보입니다.

답변 4
1
맥에서도 같은 증상 나와서
어찌 하다보니 윈도우랑 Mac OS 동시에 @Testcontainer 로직 고대로 유지된 상태에서 해결 됫네요. 해당 Could not find a valid Docker environment 이부분은 왜그런지 문제를 파악 해봐야 할거같습니다.
0
여전히 BloomFilterRedisHandlerTest나 SplitBloomFilterRedisHandlerTest 포함된 테스트 코드들은 계속
Could not find a valid Docker environment 에러가 출력되구요
물론 말씀 하신대로 for roop를 10000 -> 1000 줄여도 여전히 똑같습니다..
하지만... 모든 테스트 코드가 실패되는건 아닌거같아요...
SplitBloomFilterStrategyApiTest.test 코드는 간혈적으로 정상 동작 됫다가 안되는 문제 있긴 합니다만
redis에 데이터는 들어가긴 하네요


이전에 작성했던 다른 RedisHandlerTest도 갑자기 동작하지 않는게 아니라 계속 동작하지 않았던 상황이라는 말씀이시죠?!
아래 말씀 드린대로 윈도우 로컬 환경에 대한 문제는 제가 해결해드리기 어렵기 때문에, 임시 대응책으로 test container 대신 redis에 직접 붙는 방식으로 변경하시면 될 것 같습니다..!
결국 실행 동작을 이해하기 위한 테스트라서 이처럼 진행해도 문제될 부분은 없습니다.
그리고 ApiTest에 대한 테스트는 test container 연동과는 무관하고 애플리케이션에 api를 호출하는 부분이라, 별도로 애플리케이션 로그를 확인 해보셔야 합니다!
0
MinKyu Song님, 안녕하세요!
코드가 아닌 로컬 환경에 관한 부분은, 제가 정확한 원인을 추적할 수 없다보니 직접 해결해 드리기엔 어려움이 있네요..!
이전에 RedisTestContainerSupport 처음 만들고 테스크 수행했던건 정상적으로 돌아가고 있고,
SplitShardedBloomFilterRedisHandlerTest.mightContain 테스트만 실패하고 있다는 말씀이실까요?
로컬에 도커가 잘 실행되고 있는지 다시 한번 점검해보시고,
구글에 Could not find a valid Docker environment 검색해보면 비슷한 사례들이 나오는데 하나씩 확인해보시겠어요?
참고로 꼭 Test Container를 사용할 필요는 없습니다.
세팅에 어려움이 있으시면, 그냥 로컬 환경에 띄워져있는 레디스(컨테이너 또는 직접 설치) 포트에 직접 연결하셔도 전혀 무리 없습니다!
SplitShardedBloomFilterRedisHandlerTest 포함되어 있는 테스트 함수 mightContain 외에 모두 동작이 안됩니다.
구글에 Could not find a valid Docker environment은 대부분 mac os 환경에서 예외처리 하는 내용만 나와있네요....
""
세팅에 어려움이 있으시면, 그냥 로컬 환경에 띄워져있는 레디스(컨테이너 또는 직접 설치) 포트에 직접 연결하셔도 전혀 무리 없습니다!
""
말씀 하신내용처럼 docker compose 방식으로 아래와 같이 작성 하고 컨테이너 붙이면 되는건가요??

SplitShardedBloomFilterRedisHandlerTest 포함되어 있는 테스트 함수 mightContain 외에 모두 동작이 안됩니다.
앞서 만들었던 BloomFilterRedisHandlerTest나 SplitBloomFilterRedisHandlerTest는 정상 동작한다는 말씀이신가요?
그런거라면 for 반복문을 10000에서 1000 정도로 줄여서 수행해보시겠어요?
말씀 하신내용처럼 docker compose 방식으로 아래와 같이 작성 하고 컨테이너 붙이면 되는건가요??
네 맞습니다. docker compose로 띄우든 docker로 띄우든 그냥 레디스 직접 설치하든, test container 사용하지 않고 직접 로컬 redis에 접근하여 테스트 수행해도 무방합니다.
이미 초반 개발 환경 세팅할 때 docker로 kuke-cache-redis 컨테이너는 띄워져있을거라 여기 연결하시면 됩니다!
다만, 이전 테스트에 대한 데이터가 남아 있을 수 있기 때문에 각 테스트 끝날 때마다 redis에 저장된 데이터는 flushDb로 날려주시면 좋을 것 같네요.
0
안녕하세요, 인프런 AI 인턴입니다. MinKyu Song님.
Testcontainers 관련 에러는 대개 Docker 환경과의 통신 문제로 발생합니다. 이 문제를 해결하기 위해 몇 가지 사항을 확인해보세요:
문제 해결 방법
Docker Desktop 활성화 확인:
- Docker Desktop이 제대로 시작되었는지, 그리고 요구되는 모든 권한이 부여되었는지 확인하세요. Docker가 백그라운드에서 실행 중이어야 합니다.
- Docker Desktop이 제대로 시작되었는지, 그리고 요구되는 모든 권한이 부여되었는지 확인하세요. Docker가 백그라운드에서 실행 중이어야 합니다.
환경 변수 설정 검토:
- Docker가 테스트 환경에 접근할 수 있도록
DOCKER_HOST환경 변수가 올바르게 설정되어 있는지 확인해보세요. 일반적으로 Testcontainers는localhost나tcp://docker:2375를 사용합니다.
- Docker가 테스트 환경에 접근할 수 있도록
Docker 데몬 재시작:
- 때때로 Docker 데몬이 일시적인 문제가 있을 수 있습니다. Docker 데몬을 재시작한 후 다시 시도해 보세요.
- 때때로 Docker 데몬이 일시적인 문제가 있을 수 있습니다. Docker 데몬을 재시작한 후 다시 시도해 보세요.
Testcontainers 버전 및 호환성 확인:
- 사용 중인 Testcontainers 버전과 Docker 버전이 서로 호환되는지 확인해보세요. Testcontainers의 경우 최신 버전으로 업데이트하면 종종 문제가 해결됩니다.
- 사용 중인 Testcontainers 버전과 Docker 버전이 서로 호환되는지 확인해보세요. Testcontainers의 경우 최신 버전으로 업데이트하면 종종 문제가 해결됩니다.
방화벽 설정 확인:
- 로컬 시스템의 방화벽 또는 보안 소프트웨어가 Docker의 포트나 네트워크 연결을 차단하고 있지 않은지 확인하십시오.
- 로컬 시스템의 방화벽 또는 보안 소프트웨어가 Docker의 포트나 네트워크 연결을 차단하고 있지 않은지 확인하십시오.
운영체제 문제 해결:
- Windows 운영체제에서는 Hyper-V와 같은 가상화 기능이 활성화되어 있어야 Docker가 올바르게 작동합니다. 가상화 기술이 활성화되어 있는지 BIOS 설정을 확인하시기 바랍니다.
- Windows 운영체제에서는 Hyper-V와 같은 가상화 기능이 활성화되어 있어야 Docker가 올바르게 작동합니다. 가상화 기술이 활성화되어 있는지 BIOS 설정을 확인하시기 바랍니다.
유사한 문제를 해결한 다른 인프런 사용자들의 경험이 도움이 될 수 있습니다. 이러한 유형의 문제로 고생하는 경우, Testcontainers 및 Docker 환경 설정 문제 해결 (게시글 제목)과 같은 글을 참조해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





해결되었다니 다행입니다!