簡體   English   中英

如何為 atmoz/sftp 綁定來自測試容器的轉發端口?

[英]How to bind forwarding port from testcontainers for atmoz/sftp?


我閱讀了文章https://github.com/atmoz/sftphttps://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM