Docker maven 插件

Docker maven plugin

Docker 我发现的插件 (spotify/docker-maven-plugin) 使用本机 docker 应用程序,但据我了解 docker 只是一个 REST API "redirects" 命令 docker 守护进程的客户端。 如果我在 Windows 机器上使用 docker 并且 docker 守护程序在 Virtual Box 中的 Linux 上工作,则尤其如此。

那么,是否存在任何 docker-maven-plugin 不需要本机 docker 应用程序,只需要 "talking" 和 docker 守护进程而不需要任何中介?

它不需要本机 docker 应用程序,只要知道 docker 守护程序在哪里。

Docker-Maven-插件

根据 documentation:

By default the plugin will try to connect to docker on localhost:2375. Set the DOCKER_HOST environment variable to connect elsewhere.

DOCKER_HOST=tcp://<host>:2375

这就是客户端知道 Docker 守护程序在哪里的方式。 Docker-Maven-Plugin 尊重这个(和其他)Docker 环境变量来知道 Docker 所在的位置,无论它是本地的,在 VM 运行ning 上的虚拟机管理程序上VirtualBox 在本地,或在完全远程的服务器上。

Docker机器

如果您使用的是 Docker 机器,这些环境变量会在您 运行 时设置:

$ 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 机器的文档:

Create & Connect to Docker Machine

Docker 对于 Windows

如果您使用的是 Windows,您可能会发现使用本机客户端 Docker 有助于为所有内容提供更本机的体验。

Docker for Windows

您也可以像这样使用提到的 docker-maven-plugin:

        <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>

我正在使用 docker 文件,您必须使用此标记定义哪个路径:

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

现在您可以构建您的 jar 并通过以下方式生成 docker 图像:

mvn 包docker:build