<p>I want to deploy Spring Boot applications using Kinesis streams on Kubernetes cluster on AWS. </p>

<p>I used <em>kops</em> in an AWS EC2 (Amazon Linux) instance to create my cluster and deploy it using <em>terraform</em>. </p>

<p>I installed Spring Cloud Data Flow for Kubernetes using <em>Helm</em> chart. All my pods are up and running and I can access to the Spring Cloud Data Flow interface in order to register my dockerized apps. I am using ECR repositories to upload my Docker images. </p>

<p>When I want to deploy the stream (composed of a time-source and a log-sink), a big nice red error message pops up. I checked the log of the <em>Skipper</em> pod and I have the following error message starting with :</p>

<pre><code>org.springframework.cloud.skipper.SkipperException: Could not install AppDeployRequest
</code></pre>

<p>and finishing with :</p>

<pre><code>Caused by: java.io.IOException: Cannot run program "docker" (in directory "/tmp/spring-cloud-deployer-5769885450333766520/time-log-kinesis-stream-1539963209716/time-log-kinesis-stream.log-sink-kinesis-app-v1"): error=2, No such file or directory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) ~[na:1.8.0_111-internal]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.start(LocalAppDeployer.java:386) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.start(LocalAppDeployer.java:414) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.access$200(LocalAppDeployer.java:296) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer.deploy(LocalAppDeployer.java:199) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        ... 54 common frames omitted
Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method) ~[na:1.8.0_111-internal]
        at java.lang.UNIXProcess.&lt;init&gt;(UNIXProcess.java:247) ~[na:1.8.0_111-internal]
        at java.lang.ProcessImpl.start(ProcessImpl.java:134) ~[na:1.8.0_111-internal]
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ~[na:1.8.0_111-internal]
        ... 58 common frames omitted
</code></pre>

<p>I already had this error when I tried to deploy on a local k8s cluster on Windows 10 and I thought it was linked to Win10 platform.</p>

<p>I am using <code>spring-cloud-dataflow-server-kubernetes</code> at version <strong>1.6.2.RELEASE</strong>.</p>

<p>I really do not have any clues why this error is appearing. Thanks !</p>

<p>It looks like the <code>docker</code> command is not found by the SCDF <code>local</code> deployer's ProcessBuilder when it tries to run the docker <code>exec</code> from this path: </p>

<p>/tmp/spring-cloud-deployer-5769885450333766520/time-log-kinesis-stream-1539963209716/time-log-kinesis-stream.log-sink-kinesis-app-v1</p>

<p>The SCDF sets the above path as its working directory before running the <code>docker</code> command and hence <code>docker</code> is expected to run from this location.</p>
