如何在TestContainers上的容器中执行cmd命令?

问题描述 投票:0回答:1

我可以从 cmd 执行命令(在以 testcontainers 启动的容器内)。我想从 testcontainers api 执行相同的命令

/ # LDB_MODULES_PATH=/usr/lib/samba/ldb/ ldbmodify -H /var/lib/samba/private/sam.ldb /tmp/test.ldif 
Modified 0 records successfully

选项1:

sambaContainer.execInContainer(
            "LDB_MODULES_PATH=/usr/lib/samba/ldb/",
            "ldbmodify",
            "-H",
           "/var/lib/samba/private/sam.ldb",
            "/tmp/test.ldif",
        )

我收到错误:

OCI runtime exec failed: exec failed: unable to start container process: exec: "LDB_MODULES_PATH=/usr/lib/samba/ldb/": stat LDB_MODULES_PATH=/usr/lib/samba/ldb/: no such file or directory: unknown

我尝试了两种选择:

选项2:

sambaContainer
            .withEnv("LDB_MODULES_PATH","/usr/lib/samba/ldb/" )
            .execInContainer(
            "ldbmodify",
            "-H",
           "/var/lib/samba/private/sam.ldb",
            "/tmp/test.ldif",
        )

我收到错误:

WARNING: Module [samba_dsdb] not found - do you need to set LDB_MODULES_PATH?
Unable to load modules for /var/lib/samba/private/sam.ldb: (null)
Failed to connect to /var/lib/samba/private/sam.ldb - (null)

第二个选项的结果与执行相同

ldbmodify -H /var/lib/samba/private/sam.ldb /tmp/test.ldif

来自cmd:

如何从 testContainers 执行命令?

java bash cmd samba testcontainers
1个回答
0
投票

这有效:

val sambaContainer = GenericContainer(SAMBA_IMAGE)
                     ...
                    .withEnv("LDB_MODULES_PATH","/usr/lib/samba/ldb/")
sambaContainer.start()
sambaContainer.execInContainer(
                "ldbmodify",
                "-H",
               "/var/lib/samba/private/sam.ldb",
                "/tmp/test.ldif",
            )
© www.soinside.com 2019 - 2024. All rights reserved.