fabric8io / docker-maven-plugin

Maven plugin for running and creating Docker images
https://dmp.fabric8.io
Apache License 2.0
1.87k stars 640 forks source link

wait for port doesn't work on Windows #549

Open sofiageo opened 8 years ago

sofiageo commented 8 years ago

Wait for port doesn't work on Windows.

As an example:

<ports>
  <port>3336:3306</port>
</ports>
<wait>
  <tcp>
    <ports>
      <port>3306</port>
    </ports>
  </tcp>
  <time>40000</time>
</wait>

This won't work, while the following works and maven plugin connects to mysql using jdbc:mysql://localhost:3336

<wait>
  <time>10000</time>
</wait>

Maven: 3.3.9 docker-maven-plugin: 0.15.16 Windows 10

rhuss commented 8 years ago

Shouldn't you wait on port 3336 as this is the port exposed by Docker ? Remember, the waiting is always done by the plugin from the outside of the container.

sofiageo commented 8 years ago

I will test it when I get home where I have docker installed. However, this is the same configuration I'm using for Linux, and it works. I always thought that value was referring to container port.

sofiageo commented 8 years ago

It doesn't make a difference I'm afraid. While I can connect with a database client on the dockerized mysql, the plugin will keep waiting for connection. I've also noticed that sometimes docker:stop doesn't stop the container, it will keep running.

rhuss commented 8 years ago

Is it possible that you could share your pom.xml and project so that I could reproduce it ?

sofiageo commented 8 years ago

Sure, I've also tried this on two projects: 1) https://github.com/eea/eionet.xmlconv 2) https://github.com/eea/eionet.nat2000.sdfmanager

Docker for windows is version: 1.12.0-stable (build: 5968)

rhuss commented 8 years ago

Support for Docker for Windows over the named pipe is still pending (see #532), how did you setup you Docker daemon to access it from d-m-p ?

sofiageo commented 8 years ago

As I said in #548 I'm using <dockerHost>http://localhost:2375</dockerHost> then the plugin picks up the remote API / starts my images, etc. I didn't have to change anything else.

rhuss commented 7 years ago

Ok, lets go a step back.

When you wait on the port you need to access the exposed port on the Docker host, which normally is the mapped port (e.g. with 'docker run -p ...'). In the configuration you've shown me this is 3336. Since the wait happens from the outside the container, it is this port which should be used for the wait section.

When you say you connect with a MySQL client to the database, which connection parameter are you using and how did you start the container ?

Unfortunately I dont have a Windows box at hand.

sofiageo commented 7 years ago

I changed the wait mode to mapped, and the ports to the exposed ports, and I get this error: docker-maven-plugin:0.16.8:start failed: Start-Job failed with unexpected exception: Cannot watch on port 53336, since there is no network binding -> [Help 1]

If I set the wait mode to direct, and start the containers, then force stop execution, then I set wait mode to mapped, and run docker:start I get a different error Bind for 0.0.0.0:53336 failed: port is already allocated (Internal Server Error: 500) -> [Help 1]

If the mode is missing, or direct, the container starts, and I can still use a mysql client to connect to the database using localhost and the exposed port, but d-m-p keeps waiting for ports, until it timeouts after X seconds.

pvorb commented 7 years ago

@rhuss I'm suffering from the same issue.

How about adding a property (or probably a platform check? Not sure whether this is a good idea) that allows users to disable waiting on ports on Windows? This would at least allow Windows users to run docker-maven-plugin without making changes to the pom.xml.

rhuss commented 7 years ago

I changed the wait mode to mapped, and the ports to the exposed ports, and I get this error: docker-maven-plugin:0.16.8:start failed: Start-Job failed with unexpected exception: Cannot watch on port 53336, since there is no network binding -> [Help 1]

@gsf-greece I assume that within your container your mysqld is running on port 53336. So, if you want to use the 'mapped' mode, you have to provide a port-mapping in the <run> section so that the container is reachable from the outside (e.g. from the host where mvn is running). BTW, I was wrong when I said you need to specify the mapped port in the wait's <port>. In fact, it is the internal port (as said in the documentation), the mapped port will be looked up automatically. I suggest to add such a mapping as described in https://dmp.fabric8.io/#start-port-mapping

If I set the wait mode to direct, and start the containers, then force stop execution, then I set wait mode to mapped, and run docker:start I get a different error Bind for 0.0.0.0:53336 failed: port is already allocated (Internal Server Error: 500) -> [Help 1]

This is strange, too as the wait doesn't do a bind but a connect. Could it be that have you try to run several containers all starting on the same port?

@rhuss I'm suffering from the same issue.

@pvorb Could you elaborate a bit what you mean by 'same issue' as I still do not really understand the problem at hand. If you have a sample (standalone) pom.xml to share that I could try out, that would be awesome (would even go hunting for a Windows VM then).

But let me summarise let me cite the documentation on it:

TCP port check which periodically polls given tcp ports. It knows the following sub-elements:

  • mode can be either mapped which uses the mapped ports or direct in which case the container ports are addressed directly. In the later case the host field should be left empty in order to select the container ip (which must be routed which is only the case when running on the Docker daemon’s host directly). Default is 'direct' when host is localhost, 'mapped' otherwise. The direct mode might help when a so-called user-proxy is enabled on the Docker daemon which makes the mapped ports directly available even when the container is not ready yet.

  • host is the hostname or the IP address. It defaults to ${docker.host.address} for a mapped mode and the container ip address for the direct mode.

  • ports is a list of TCP ports to check. These are supposed to be the container internal ports.* When your Docker daemon runs in a VM with an own IP address or when it runs remotely, you need

The 'mode' is important here at it how your Docker setup is and whether you can access the container via its (virtual) IP directly. "mapped" means that the wait runs against the mapped port. This mapping must be configured with a port-mapping as described in https://dmp.fabric8.io/#start-port-mapping. However, when you run directly on the host where the Docker daemon runs and you can access Docker pods directly with the container ip (which is an host-internal private IP), then you can use direct and do not need any port mapping. In this case, the wait check goes directly to the port exposed by the container.


Said all that, I typically favour wait-checks based on logs over network-based checks, which always cause problems in certain circumstances (as host ports are a 'shared' resource). log check are quite robust and oftern also faster. So in the case of mysql why not waiting on a certain pattern in the logs ?

pvorb commented 7 years ago

@rhuss Thanks for elaborating.

I finally found the time to provide a minimal example. I created a repository for it: pvorb/dmp-wait-on-port-sample. I hope you are able to replicate the issue using this repo. Here's what I get on my Windows machine when I run mvn docker:start:

$ mvn docker:start
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dmp-wait-on-port-sample 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- docker-maven-plugin:0.20.1:start (default-cli) @ dmp-wait-on-port-sample ---
[INFO] DOCKER> [zookeeper:3.4] "zookeeper": Start container ae6166766b2d
[ERROR] DOCKER> Error occurred during container startup, shutting down...
00:54:43.853 ZOO> ZooKeeper JMX enabled by default
00:54:43.855 ZOO> Using config: /conf/zoo.cfg
[INFO] DOCKER> [zookeeper:3.4] "zookeeper": Stop and removed container ae6166766b2d after 0 ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.759 s
[INFO] Finished at: 2017-05-10T00:54:44+02:00
[INFO] Final Memory: 19M/231M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.20.1:start (default-cli) on project dmp-wait-on-port-sample: Execution default-cli of goal io.fabric8:docker-maven-plugin:0.20.1:start failed: Start-Job failed with unexpected exception: Cannot watch on port 2181, since there is no network binding -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

There's also a branch named "mode-direct" that has <mode>direct</mode> set for the waits. That leads to the following output, even if I increase <time>5000</time> to e.g. <time>60000</time>.

$ mvn docker:start
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dmp-wait-on-port-sample 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- docker-maven-plugin:0.20.1:start (default-cli) @ dmp-wait-on-port-sample ---
[INFO] DOCKER> [zookeeper:3.4] "zookeeper": Start container a7745c10de09
[INFO] DOCKER> [zookeeper:3.4] "zookeeper": Waiting for ports [2181] directly on container with IP (172.17.0.8).
01:02:50.669 ZOO> ZooKeeper JMX enabled by default
01:02:50.670 ZOO> Using config: /conf/zoo.cfg
01:02:51.436 ZOO> 2017-05-09 23:02:51,433 [myid:] - INFO  [main:QuorumPeerConfig@134] - Reading configuration from: /conf/zoo.cfg
01:02:51.445 ZOO> 2017-05-09 23:02:51,445 [myid:] - INFO  [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
01:02:51.447 ZOO> 2017-05-09 23:02:51,445 [myid:] - INFO  [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
01:02:51.447 ZOO> 2017-05-09 23:02:51,445 [myid:] - INFO  [main:DatadirCleanupManager@101] - Purge task is not scheduled.
01:02:51.447 ZOO> 2017-05-09 23:02:51,446 [myid:] - WARN  [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running  in standalone mode
01:02:51.481 ZOO> 2017-05-09 23:02:51,480 [myid:] - INFO  [main:QuorumPeerConfig@134] - Reading configuration from: /conf/zoo.cfg
01:02:51.481 ZOO> 2017-05-09 23:02:51,481 [myid:] - INFO  [main:ZooKeeperServerMain@96] - Starting server
01:02:51.496 ZOO> 2017-05-09 23:02:51,493 [myid:] - INFO  [main:Environment@100] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
01:02:51.496 ZOO> 2017-05-09 23:02:51,494 [myid:] - INFO  [main:Environment@100] - Server environment:host.name=a7745c10de09
01:02:51.496 ZOO> 2017-05-09 23:02:51,494 [myid:] - INFO  [main:Environment@100] - Server environment:java.version=1.8.0_121
01:02:51.496 ZOO> 2017-05-09 23:02:51,494 [myid:] - INFO  [main:Environment@100] - Server environment:java.vendor=Oracle Corporation
01:02:51.496 ZOO> 2017-05-09 23:02:51,494 [myid:] - INFO  [main:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre
01:02:51.496 ZOO> 2017-05-09 23:02:51,494 [myid:] - INFO  [main:Environment@100] - Server environment:java.class.path=/zookeeper-3.4.10/bin/../build/classes:/zookeeper-3.4.10/bin/../build/lib/*.jar:/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/conf:
01:02:51.496 ZOO> 2017-05-09 23:02:51,495 [myid:] - INFO  [main:Environment@100] - Server environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
01:02:51.496 ZOO> 2017-05-09 23:02:51,495 [myid:] - INFO  [main:Environment@100] - Server environment:java.io.tmpdir=/tmp
01:02:51.502 ZOO> 2017-05-09 23:02:51,495 [myid:] - INFO  [main:Environment@100] - Server environment:java.compiler=<NA>
01:02:51.502 ZOO> 2017-05-09 23:02:51,501 [myid:] - INFO  [main:Environment@100] - Server environment:os.name=Linux
01:02:51.503 ZOO> 2017-05-09 23:02:51,501 [myid:] - INFO  [main:Environment@100] - Server environment:os.arch=amd64
01:02:51.506 ZOO> 2017-05-09 23:02:51,502 [myid:] - INFO  [main:Environment@100] - Server environment:os.version=4.4.52-boot2docker
01:02:51.506 ZOO> 2017-05-09 23:02:51,505 [myid:] - INFO  [main:Environment@100] - Server environment:user.name=zookeeper
01:02:51.506 ZOO> 2017-05-09 23:02:51,505 [myid:] - INFO  [main:Environment@100] - Server environment:user.home=/home/zookeeper
01:02:51.506 ZOO> 2017-05-09 23:02:51,505 [myid:] - INFO  [main:Environment@100] - Server environment:user.dir=/zookeeper-3.4.10
01:02:51.527 ZOO> 2017-05-09 23:02:51,524 [myid:] - INFO  [main:ZooKeeperServer@829] - tickTime set to 2000
01:02:51.527 ZOO> 2017-05-09 23:02:51,525 [myid:] - INFO  [main:ZooKeeperServer@838] - minSessionTimeout set to -1
01:02:51.527 ZOO> 2017-05-09 23:02:51,526 [myid:] - INFO  [main:ZooKeeperServer@847] - maxSessionTimeout set to -1
01:02:51.548 ZOO> 2017-05-09 23:02:51,547 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
[ERROR] DOCKER> [zookeeper:3.4] "zookeeper": Timeout after 5040 ms while waiting on tcp port '[/172.17.0.8:2181]'
[ERROR] DOCKER> Error occurred during container startup, shutting down...
[INFO] DOCKER> [zookeeper:3.4] "zookeeper": Stop and removed container a7745c10de09 after 0 ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.022 s
[INFO] Finished at: 2017-05-10T01:02:56+02:00
[INFO] Final Memory: 20M/322M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.20.1:start (default-cli) on project dmp-wait-on-port-sample: Execution default-cli of goal io.fabric8:docker-maven-plugin:0.20.1:start failed: Start-Job failed with unexpected exception: [zookeeper:3.4] "zookeeper": Timeout after 5040 ms while waiting on tcp port '[/172.17.0.8:2181]' -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Waiting on a log entry works, though.

Thank you in advance!

pvorb commented 6 years ago

@rhuss Can you reproduce the problem using my sample project?

nytins commented 6 years ago

I think I see the same issue on Mac. I have this config:

<ports>
   <port>8080:9090</port>
</ports>
<wait>
   <tcp>
       <ports>
           <port>9090</port>
       </ports>
   </tcp>
   <time>60000</time>
</wait>

But I get the error

[ERROR] DOCKER> [dock****.com/***/***-app:0.0.4-SNAPSHOT] "app": Timeout after 60353 ms while waiting on tcp port '[localhost/127.0.0.1:9090]'
pvorb commented 6 years ago

The configuration at branch "working" of my sample project now works with docker-maven-plugin v0.23.0 and boot2docker v18.01.0-ce on Windows 7 64-bit.

In short, it uses mapped mode port configurations:

<ports>
    <port>9092:9092</port>
</ports>
<wait>
    <tcp>
        <mode>mapped</mode>
        <ports>
            <port>9092</port>
        </ports>
    </tcp>
    <time>60000</time>
</wait>
pvorb commented 6 years ago

@nytins If I don't get this wrong, you probably need to wait on port 8080 instead of 9090. Are you sure your docker container doesn't have an application running at port 8080?

Try the following configuration:

<ports>
   <port>9090:8080</port>
</ports>
<wait>
   <tcp>
       <mode>mapped</mode>
       <ports>
           <port>9090</port>
       </ports>
   </tcp>
   <time>60000</time>
</wait>
emetsger commented 5 years ago

I think I'm seeing the same problem on a Mac using docker-machine. I specify:

<wait>
    <tcp>
       <mode>mapped</mode>
       <ports>
            <port>${mail.imaps.port}</port>
            <port>${mail.smtp.port}</port>
        </ports>
    </tcp>
</wait>
<ports>
    <port>${mail.smtp.port}:25</port>
    <port>${mail.imap.port}:143</port>
    <port>${mail.imaps.port}:993</port>
    <port>${mail.msp.tls.port}:587</port>
</ports>

(Ports are allocated by the build-helper-maven-plugin earlier in the POM)

When I run mvn clean verify -X -e (in the notification-integration module containing the MDP plugin configuration) I get the errors:

The ports are properly mapped according to the debug output below:

ports = [61332:25, 61333:143, 61334:993, 61335:587]
...
HostConfig":{"PortBindings":{"25/tcp":[{"HostPort":"61332"}],"143/tcp":[{"HostPort":"61333"}],"587/tcp":[{"HostPort":"61335"}],"993/tcp":[{"HostPort":"61334"}]}

If I use a simple <wait><time>15000</time></wait> the Maven build succeeds (MDP starts containers, integration tests run successfully for my project, etc.)

The relavent output:

[DEBUG] Configuring mojo 'io.fabric8:docker-maven-plugin:0.27.2:start' with basic configurator -->
[DEBUG]   (f) autoCreateCustomNetworks = false
[DEBUG]   (f) execution = io.fabric8:docker-maven-plugin:0.27.2:start {execution: start-docker-its}
[DEBUG]   (f) alias = mail
[DEBUG]   (s) name = oapass/docker-mailserver:latest
[DEBUG]   (f) mode = mapped
[DEBUG]   (f) ports = [61334, 61332]
[DEBUG]   (f) tcp = io.fabric8.maven.docker.config.WaitConfiguration$TcpConfiguration@5d601832
[DEBUG]   (f) wait = io.fabric8.maven.docker.config.WaitConfiguration@3ca17943
[DEBUG]   (f) skip = false
[DEBUG]   (f) hostname = mail
[DEBUG]   (f) domainname = local.domain
[DEBUG]   (f) ports = [61332:25, 61333:143, 61334:993, 61335:587]
[DEBUG]   (f) bind = [maildata:/var/mail, mailstate:/var/mail-state]
[DEBUG]   (f) volumes = io.fabric8.maven.docker.config.RunVolumeConfiguration@5170bc02
[DEBUG]   (f) env = {DMS_DEBUG=0, DOMAINNAME=local.domain, ENABLE_SPAMASSASSIN=0, HOSTNAME=mail, ONE_DIR=1, OVERRIDE_HOSTNAME=mail.local.domain, PERMIT_DOCKER=network, SMTP_ONLY=0, TLS_LEVEL=intermediate}
[DEBUG]   (f) run = io.fabric8.maven.docker.config.RunImageConfiguration@c0c8f96
[DEBUG]   (f) alias = fcrepo
[DEBUG]   (s) name = oapass/fcrepo:4.7.5-3.1
[DEBUG]   (f) skip = false
[DEBUG]   (f) url = http://fedoraAdmin:moo@${docker.host.address}:61336/fcrepo/rest/
[DEBUG]   (f) time = 180000
[DEBUG]   (f) wait = io.fabric8.maven.docker.config.WaitConfiguration@3bd08435
[DEBUG]   (f) ports = [61336:61336, 61337:61337, 61338:61338]
[DEBUG]   (f) env = {FCREPO_ACTIVEMQ_CONFIGURATION=classpath:/activemq-queue.xml, FCREPO_HOST=fcrepo, FCREPO_JMS_BASEURL=http://${docker.host.address}:61336/fcrepo/rest/, FCREPO_JMS_PORT=61337, FCREPO_LOG_LEVEL=DEBUG, FCREPO_PORT=61336, FCREPO_STOMP_PORT=61338}
[DEBUG]   (f) run = io.fabric8.maven.docker.config.RunImageConfiguration@3e52ed5d
[DEBUG]   (f) images = [ImageConfiguration {name='oapass/docker-mailserver:latest', alias='mail'}, ImageConfiguration {name='oapass/fcrepo:4.7.5-3.1', alias='fcrepo'}]
[DEBUG]   (f) keepContainer = false
[DEBUG]   (f) logStdout = false
[DEBUG]   (f) maxConnections = 100
[DEBUG]   (f) project = MavenProject: org.dataconservancy.pass.notify:notification-integration:0.0.1-2.3-SNAPSHOT @ /Users/esm/workspaces/pass/notification-services/notification-integration/pom.xml
[DEBUG]   (f) removeVolumes = false
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@589b028e
[DEBUG]   (f) settings = org.apache.maven.execution.SettingsAdapter@28e94c2
[DEBUG]   (f) skip = false
[DEBUG]   (f) skipExtendedAuth = false
[DEBUG]   (f) skipMachine = false
[DEBUG]   (f) skipRun = false
[DEBUG]   (f) startParallel = false
[DEBUG]   (f) useColor = true
[DEBUG]   (f) verbose = false
[DEBUG] -- end configuration --
[DEBUG] DOCKER> Container create config: {"Image":"oapass/docker-mailserver:latest","Hostname":"mail","Domainname":"local.domain","ExposedPorts":{"25/tcp":{},"143/tcp":{},"587/tcp":{},"993/tcp":{}},"Env":["DOMAINNAME=local.domain","HOSTNAME=mail","DMS_DEBUG=0","TLS_LEVEL=intermediate","ONE_DIR=1","OVERRIDE_HOSTNAME=mail.local.domain","ENABLE_SPAMASSASSIN=0","PERMIT_DOCKER=network","SMTP_ONLY=0"],"Labels":{"dmp.coordinates":"org.dataconservancy.pass.notify:notification-integration:0.0.1-2.3-SNAPSHOT"},"HostConfig":{"PortBindings":{"25/tcp":[{"HostPort":"61332"}],"143/tcp":[{"HostPort":"61333"}],"587/tcp":[{"HostPort":"61335"}],"993/tcp":[{"HostPort":"61334"}]},"Binds":["maildata:/var/mail","mailstate:/var/mail-state"],"VolumesFrom":[]},"Volumes":{"/var/mail":{},"/var/mail-state":{}}}
[INFO] DOCKER> [oapass/docker-mailserver:latest] "mail": Start container 1e866bfdc620
[ERROR] DOCKER> Error occurred during container startup, shutting down...
[DEBUG] DOCKER> shutdown will wait max of 0 seconds before removing container
[INFO] DOCKER> [oapass/docker-mailserver:latest] "mail": Stop and removed container 1e866bfdc620 after 0 ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.390 s
[INFO] Finished at: 2018-10-18T22:37:33-04:00
[INFO] Final Memory: 53M/989M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.27.2:start (start-docker-its) on project notification-integration: Execution start-docker-its of goal io.fabric8:docker-maven-plugin:0.27.2:start failed: Cannot watch on port 61334, since there is no network binding -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.fabric8:docker-maven-plugin:0.27.2:start (start-docker-its) on project notification-integration: Execution start-docker-its of goal io.fabric8:docker-maven-plugin:0.27.2:start failed: Cannot watch on port 61334, since there is no network binding
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution start-docker-its of goal io.fabric8:docker-maven-plugin:0.27.2:start failed: Cannot watch on port 61334, since there is no network binding
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: java.lang.IllegalArgumentException: Cannot watch on port 61334, since there is no network binding
    at io.fabric8.maven.docker.service.WaitService.getTcpWaitChecker(WaitService.java:170)
    at io.fabric8.maven.docker.service.WaitService.prepareWaitCheckers(WaitService.java:115)
    at io.fabric8.maven.docker.service.WaitService.wait(WaitService.java:50)
    at io.fabric8.maven.docker.service.helper.StartContainerExecutor.waitAndPostExec(StartContainerExecutor.java:58)
    at io.fabric8.maven.docker.service.helper.StartContainerExecutor.startContainers(StartContainerExecutor.java:44)
    at io.fabric8.maven.docker.StartMojo.lambda$startImage$0(StartMojo.java:307)
    at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)
    at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:38)
    at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:260)
    at java.util.concurrent.ExecutorCompletionService.submit(ExecutorCompletionService.java:181)
    at io.fabric8.maven.docker.StartMojo.startImage(StartMojo.java:301)
    at io.fabric8.maven.docker.StartMojo.executeInternal(StartMojo.java:169)
    at io.fabric8.maven.docker.AbstractDockerMojo.execute(AbstractDockerMojo.java:225)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 21 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
esm:~/workspaces/pass/notification-services/notification-integration (integration)$