我读了文章https://github.com/atmoz/sftp,https://www.testcontainers.org/quickstart/junit_4_quickstart/,https://www.testcontainers.org/quickstart/junit_4_quickstart/,没有找到相关信息.
我正在用java测试我的sftp加载器。我使用的是Junit 4和java 11
当我从控制台启动图像时,我看到了这个
ilys@ilys-AORUS-5-SE:~/Programming/work$ docker run -v /tmp/upload:/home/foo/upload -p 2222:22 -d atmoz/sftp foo:bar:1001
ilys@ilys-AORUS-5-SE:~/Programming/work$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e04d26325ac atmoz/sftp "/entrypoint foo:bar…" 1 second ago Up 1 second 0.0.0.0:2222->22/tcp, :::2222->22/tcp hopeful_banach
并通过端口2222
成功连接到Docker
但是当我从testcontainer启动下一个代码时:
sftp = new GenericContainer("atmoz/sftp:latest")
.withExposedPorts(2222)
.withFileSystemBind(
"/tmp/upload",
"/home/foo/upload",
BindMode.READ_WRITE)
.withCommand("foo:bar:1001:::upload");
我还有一个
ilys@ilys-AORUS-5-SE:~/Programming/work$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b25f9f3b7255 atmoz/sftp:latest "/entrypoint foo:bar…" 16 seconds ago Up 16 seconds 22/tcp, 0.0.0.0:49257->2222/tcp, :::49255->2222/tcp friendly_clarke
9238e8dade0c testcontainers/ryuk:0.3.4 "/app" 17 seconds ago Up 17 seconds 0.0.0.0:49256->8080/tcp, :::49254->8080/tcp testcontainers-ryuk-f71b562e-c37b-4253-9e5e-f7d308ddfaed
和例外
org.testcontainers.containers.ContainerLaunchException: Container startup failed
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:349)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)
我尝试用sftp.setPortBindings(Collections.singletonList("2222"));
启动testcontainer,得到了类似的结果。
有没有办法像从控制台那样通过端口转发2222->22
启动atomz/sfpt?
1条答案
按热度按时间o2g1uqev1#
Testcontainers提供了SFTP的一个示例。
Testcontainers会将端口22Map到一个随机端口,正如您在提供的示例中所看到的,您可以使用
sftp.getMappedPort(22))
获得该端口