luc*_*091 2 java spring docker spring-boot testcontainers
我尝试对我的 java spring 应用程序进行 dockerize。
在我的 build.gradle 中
implementation 'org.testcontainers:junit-jupiter'
implementation 'org.testcontainers:postgresql'
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中:
@SpringBootTest
class ApplicationTests {
@ClassRule
public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:11.1")
.withDatabaseName("integration-tests-db")
.withUsername("sa")
.withPassword("sa");
static class Initializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
TestPropertyValues.of(
"spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(),
"spring.datasource.username=" + postgreSQLContainer.getUsername(),
"spring.datasource.password=" + postgreSQLContainer.getPassword()
).applyTo(configurableApplicationContext.getEnvironment());
}
}
Run Code Online (Sandbox Code Playgroud)
}
Dockerfile:
FROM adoptopenjdk/openjdk16:jdk-16.0.2_7-alpine-slim
MAINTAINER myapplication
ARG JAR_FILE=build/libs/myapplication-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} myapplication-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/myapplication-0.0.1-SNAPSHOT.jar"]
Run Code Online (Sandbox Code Playgroud)
然后从终端运行:
docker build --no-cache --tag=myapplication:latest .
docker run -v /var/run/docker.sock:/var/run/docker.sock -p8080:8080 myapplication:latest
Run Code Online (Sandbox Code Playgroud)
毕竟我看到一个错误:
2021-10-24 09:12:25.781 警告 [,,] 1 --- [containers-ryuk] o.testcontainers.utility.ResourceReaper :无法连接到 172.17.0.1:50582 的 Ryuk
java.net.ConnectException:连接在 java.base/sun.nio.ch.Net.pollConnect(本机方法)处被拒绝 ~[na:na] 在 java.base/sun.nio.ch.Net.pollConnectNow(Net.java :669)〜[na:na]在java.base / sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)〜[na:na]在java.base / sun.nio.ch.NioSocketImpl.connect (NioSocketImpl.java:597) ~[na:na] 在 java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[na:na] 在 java.base/java.net.Socket.connect (Socket.java:645) ~[na:na] 在 org.testcontainers.utility.ResourceReaper.lambda$null$1(ResourceReaper.java:189) ~[testcontainers-1.16.0.jar!/:na] 在 org. rnorth.ducttape.ratelimits.RateLimiter.doWhenReady(RateLimiter.java:27) ~[duct-tape-1.0.8.jar!/:na] 位于 org.testcontainers.utility.ResourceReaper.lambda$start$2(ResourceReaper.java: 185) ~[testcontainers-1.16.0.jar!/:na] 在 java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
我究竟做错了什么?不幸的是,经过两天的努力,我已经没有想法了。
顺便说一句:我禁用了使用 gRPC FUSE 从 Docker 进行文件共享,但没有帮助。我用的是macOS。
小智 7
-e TESTCONTAINERS_HOST_OVERRIDE=docker.for.mac.host.internal在运行命令后添加
docker run -e TESTCONTAINERS_HOST_OVERRIDE=docker.for.mac.host.internal ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |