protected GenericContainer<?> startContainerWithCommand(
        String shellCommand,
        WaitStrategy waitStrategy,
        Integer... ports
    ) {
        // apply WaitStrategy to container
        return new GenericContainer<>(TestImages.ALPINE_IMAGE)
            .withExposedPorts(ports)
            .withCommand("sh", "-c", shellCommand)
            .waitingFor(waitStrategy.withStartupTimeout(Duration.ofMillis(WAIT_TIMEOUT_MILLIS)));
    }
Starts a GenericContainer with the Alpine image, passing the given {@code shellCommand} as
a parameter to {@literal sh -c} (the container CMD) and apply a give wait strategy.
Note that the timeout will be overwritten if any with {@link #WAIT_TIMEOUT_MILLIS}.
@param shellCommand the shell command to execute
@param waitStrategy The wait strategy to apply
@return the (unstarted) container
core/src/test/java/org/testcontainers/junit/wait/strategy/AbstractWaitStrategyTest.java