[英]How to bind forwarding port from testcontainers for atmoz/sftp?
我閱讀了文章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
但是當我從帶有下一個代碼的測試容器啟動時:
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"));
啟動測試容器並得到類似的結果。
有沒有辦法像從控制台那樣通過端口轉發2222->22
啟動 atmoz/sfpt?
Testcontainers 為 SFTP 提供了一個示例。 看看這里
測試容器會將 map 端口 22 連接到一個隨機端口,正如您在示例中看到的那樣,您可以使用sftp.getMappedPort(22))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.