Docker maven插件

我发现的Docker插件(spotify / docker-maven-plugin)使用本地docker应用程序,但据我所知, docker只是一个REST API客户端,它将命令“redirect”到docker守护进程。 如果我在Windows机器上使用docker,docker守护进程在VirtualBox的Linux上工作,情况更是如此。

那么,是否存在任何不需要本地docker应用程序的docker-maven-plugin,而只需与docker守护进程“交谈”而不需要任何中介?

它不需要本地的docker应用程序,就像知道docker守护进程的位置一样。

多克尔 – Maven的插件

根据文档 :

默认情况下,插件会尝试连接到localhost:2375上的docker。 设置DOCKER_HOST环境variables以连接到别处。

 DOCKER_HOST=tcp://<host>:2375 

这就是客户端如何知道Docker守护进程的位置。 Docker-Maven-Plugin尊重这个(和其他)Docker环境variables,以便知道Docker驻留在哪里,无论是本地的,在本地的VirtualBox等虚拟机pipe理程序上运行的虚拟机,还是在完全远程的服务器上。

docker机

如果您使用Docker Machine,则在运行时会设置这些环境variables:

 $ docker-machine env default export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://172.16.62.130:2376" export DOCKER_CERT_PATH="/Users/<yourusername>/.docker/machine/machines/default" export DOCKER_MACHINE_NAME="default" # Run this command to configure your shell: # eval "$(docker-machine env default)" $ eval "$(docker-machine env default)" 

Docker机器的文档:

创build并连接到Docker机器

Docker for Windows

如果您使用的是Windows,则可能会发现使用本地客户端Docker为每件事提供更原始的体验是有帮助的。

Docker for Windows

你也可以使用像这样的docker-maven插件:

  <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>yourImageName</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> 

重要的是这两个标签:

 <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 

我正在使用dockerfile,你必须用这个标签来定义哪个path:

 <dockerDirectory>src/main/docker</dockerDirectory> 

现在,您可以通过以下方式构build您的jar并生成docker映像:

mvn包docker:build