@Override
    public void start() {
        if (!hasContainer || started) {
            return;
        }
        synchronized (this) {
            if (started) {
                return;
            }
            log.info("The docker compose config: \n{}", dockerComposeConfig);
            try {
                Files.createDirectories(workingDir);
            } catch (Exception e) {
                throw new RuntimeException(
                        "Failed to create the working directory: "
                                + workingDir,
                        e);
            }
            try {
                super.start();
            } catch (Exception e) {
                StringBuilder builder = new StringBuilder(1024);
                builder.append("Failed to start the docker compose: ");
                appendContainerInfo(builder,
                        "minio",
                        getContainerByServiceName(MINIO_SERVICE_NAME));
                appendContainerInfo(builder,
                        "mongo",
                        getContainerByServiceName(MONGO_SERVICE_NAME));
                appendContainerInfo(builder,
                        "redis",
                        getContainerByServiceName(REDIS_SERVICE_NAME));
                appendContainerInfo(builder,
                        "elasticsearch",
                        getContainerByServiceName(ELASTICSEARCH_SERVICE_NAME));
                appendContainerInfo(builder,
                        "turms-gateway",
                        getContainerByServiceName(TURMS_GATEWAY_SERVICE_NAME));
                appendContainerInfo(builder,
                        "turms-service",
                        getContainerByServiceName(TURMS_SERVICE_SERVICE_NAME));

                throw new RuntimeException(builder.toString(), e);
            }
            started = true;
        }
    }
@param dockerCompose TODO: Use InputStream instead of File once DockerComposeContainer
                     supports
                     (https://github.com/testcontainers/testcontainers-java/issues/3431)
turms-server-test-common/src/main/java/im/turms/server/common/testing/environment/TestEnvironmentContainer.java