// spring-boot-auto-configure options: START
:page-partial:
:doctitle: Camel Spring Boot Starter for docker

== Spring Boot Auto-Configuration

When using docker with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-docker-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 22 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.docker.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
| *camel.component.docker.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.docker.cert-path* | Location containing the SSL certificate chain |  | String
| *camel.component.docker.cmd-exec-factory* | The fully qualified class name of the DockerCmdExecFactory implementation to use | com.github.dockerjava.netty.NettyDockerCmdExecFactory | String
| *camel.component.docker.configuration* | To use the shared docker configuration. The option is a org.apache.camel.component.docker.DockerConfiguration type. |  | DockerConfiguration
| *camel.component.docker.email* | Email address associated with the user |  | String
| *camel.component.docker.enabled* | Whether to enable auto configuration of the docker component. This is enabled by default. |  | Boolean
| *camel.component.docker.follow-redirect-filter* | Whether to follow redirect filter | false | Boolean
| *camel.component.docker.host* | Docker host | localhost | String
| *camel.component.docker.lazy-start-producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean
| *camel.component.docker.logging-filter* | Whether to use logging filter | false | Boolean
| *camel.component.docker.max-per-route-connections* | Maximum route connections | 100 | Integer
| *camel.component.docker.max-total-connections* | Maximum total connections | 100 | Integer
| *camel.component.docker.parameters* | Additional configuration parameters as key/value pairs |  | Map
| *camel.component.docker.password* | Password to authenticate with |  | String
| *camel.component.docker.port* | Docker port | 2375 | Integer
| *camel.component.docker.request-timeout* | Request timeout for response (in seconds) |  | Integer
| *camel.component.docker.secure* | Use HTTPS communication | false | Boolean
| *camel.component.docker.server-address* | Server address for docker registry. | https://index.docker.io/v1/ | String
| *camel.component.docker.socket* | Socket connection mode | true | Boolean
| *camel.component.docker.tls-verify* | Check TLS | false | Boolean
| *camel.component.docker.username* | User name to authenticate with |  | String
|===
// spring-boot-auto-configure options: END
