如何在Docker测试容器中添加运行参数

时间:2020-08-20 20:22:53

标签: java docker integration-testing junit5 testcontainers

对于我要与测试容器一起运行的特定图像,需要在构建后像这样启动容器:

docker run \
  -v ~/volume:/tmp/volume\
  --cap-add SYS_NICE --cap-add SYS_RESOURCE --cap-add SYS_PTRACE\
  docker-image

但是我想知道如何将运行时选项--cap-add SYS_NICE --cap-add SYS_RESOURCE --cap-add SYS_PTRACE部分添加到Dockerfile并构建自己的本地副本或使用TestContainer方法,或者甚至可以通过配置docker守护程序来实现?我以为Container.withCommand()做到了这一点,但似乎覆盖了启动命令,据我所知,并没有添加这些运行参数。

1 个答案:

答案 0 :(得分:1)

您可以使用 GenericContainer#withCreateContainerCmdModifier(...),这里是完整示例:

new GenericContainer<>(
            DOCKER_HOST_CONTAINER_NAME
        ).withCreateContainerCmdModifier(
            it -> it.withHostConfig(
                HostConfig.newHostConfig()
                    .withCapAdd(Capability.NET_ADMIN, Capability.NET_RAW)
                    .withNetworkMode(network.getId())
            )
        ).withNetwork(network)
            .withNetworkAliases(dockerHostName)
            .waitingFor(
                Wait.forLogMessage(".*Forwarding ports.*", 1)
            )