#java #spring-boot #testcontainers
#java #весенняя загрузка #тестовые контейнеры
Вопрос:
Я использую тестовые контейнеры, и до сих пор он работал нормально. Недавно я обновил docker и IntelliJ, но я не знаю, является ли это причиной следующей проблемы.
Это зависимости, которые я использовал:
testCompile 'org.testcontainers:testcontainers:1.12.3'
testCompile 'org.testcontainers:oracle-xe:1.12.3'
Это трассировка стека:
2020-10-12T13:13:06.709 WARN testcontainers-ryuk [rg.testcontainers.utility.ResourceReaper] - Can not connect to Ryuk at localhost:32778
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at org.testcontainers.utility.ResourceReaper.lambda$start$1(ResourceReaper.java:114)
at java.lang.Thread.run(Thread.java:748)
java.lang.ExceptionInInitializerError
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
...
Caused by: org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=ryangoh/oracle_12c_r1_xe:latest)
at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1153)
at org.testcontainers.containers.GenericContainer.setDockerImageName(GenericContainer.java:1141)
at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:246)
at org.testcontainers.containers.JdbcDatabaseContainer.<init>(JdbcDatabaseContainer.java:36)
at org.testcontainers.containers.OracleContainer.<init>(OracleContainer.java:40)
at com.vocalink.bps.reporting.integration.AbstractContainerTest.<clinit>(AbstractContainerTest.java:24)
... 49 more
Caused by: java.lang.IllegalStateException: Can not connect to Ryuk
at org.testcontainers.utility.ResourceReaper.start(ResourceReaper.java:150)
at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:131)
at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:51)
at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:27)
at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:20)
at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:27)
at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1151)
... 54 more
Кто-нибудь знает, как решить эту проблему?
Заранее благодарю вас.
Комментарии:
1. Можете ли вы добавить результат
docker ps
docker images
команды and в вопрос?2. @wak786 Я нашел ответ. Похоже, в docker 2.4.0 для Mac есть проблема
Ответ №1:
Проблема была вызвана новой версией docker. Если вы обновили docker до версии 2.4.0, вы можете попробовать несколько вариантов.
- отключите опцию «Использовать gRPC FUSE для совместного использования файлов» в настройках docker.
- обновите тестовые контейнеры до 1.15.0-rc2
- понизьте docker до 2.3.x
Я попробовал первый вариант, и он сработал для меня.
Я использую mac. Я не знаю, есть ли подобная проблема на других платформах.
Комментарии:
1. @Andrey у меня тоже это сработало, но у меня сложилось впечатление, что он работает медленнее. У вас возникают такие проблемы?
2. К вашему сведению — в более новой версии docker для Mac переключитесь с «gRPC FUSE» на «osxfs (Legacy)», чтобы исправить эту проблему.