DockerClientFactory.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package space.anyi.codesandbox.docker;
  2. import com.github.dockerjava.api.DockerClient;
  3. import com.github.dockerjava.core.DefaultDockerClientConfig;
  4. import com.github.dockerjava.core.DockerClientConfig;
  5. import com.github.dockerjava.core.DockerClientImpl;
  6. import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
  7. import com.github.dockerjava.transport.DockerHttpClient;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import java.time.Duration;
  11. /**
  12. * @fileName: DockerClientFactory
  13. * @projectName: serve
  14. * @package: space.anyi.codesandbox.docker
  15. * @author: yangyi
  16. * @date:14/10/2026 5:44 pm
  17. * @description: Docker Client 配置类,注册 DockerClient Bean 供沙箱注入
  18. */
  19. @Configuration
  20. public class DockerClientFactory {
  21. @Bean
  22. public DockerClient dockerClient() {
  23. DockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
  24. .build();
  25. DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
  26. .dockerHost(dockerClientConfig.getDockerHost())
  27. .maxConnections(100)
  28. .connectionTimeout(Duration.ofSeconds(30))
  29. .responseTimeout(Duration.ofSeconds(45))
  30. .build();
  31. return DockerClientImpl.getInstance(dockerClientConfig, httpClient);
  32. }
  33. }