Maven插件构建Docker镜像

工具

经过调研,有以下几款Docker的Maven插件进入笔者视野:

 

插件名称官方地址
spotifyhttps://github.com/spotify/docker-maven-plugin
fabrichttps://github.com/fabric8io/docker-maven-plugin
bibryamhttps://github.com/bibryam/docker-maven-plugin

从Stars、文档易用性以及更新频率三个纬度考虑,选用了最上面的那一款。

使用插件构建Docker镜像

1.在pom.xml加入如下代码

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.14</version>
                <configuration>
                    <forceTags>true</forceTags>     
                    <serverId>docker-repo</serverId>
                    <registryUrl>>10.122.61.205</registryUrl>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <imageName>10.122.61.205/devops/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <dockerHost>http://10.122.25.201:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

2.  在 10.122.25.201(必须事先安装好docker软件)主机上,docker插件要在这个机器上去执行构建docker image.

上面表示要在0.122.25.201:2375端口上监听来自插件的docker 命令。

要打开这个端口,则登录到10.122.25.201上,执行下面的命令

# vi /usr/lib/systemd/system/docker.service

在ExecStart后面 添加一行(表示启动2375端口 用于监听远程操作)
 -H tcp://0.0.0.0:2375  -H unix://var/run/docker.sock \

如下所示:

ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
	  -H tcp://0.0.0.0:2375  -H unix://var/run/docker.sock \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
	  $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID

# systemctl daemon-reload

# systemctl restart docker

3. 在本地的settings.xml加入镜像仓库的如下信息。

本例中,harbor是docker 镜像仓库私服,地址在10.122.61.205:80上面。

该项目的images会放在它的10.122.61.205/devops/下面

settings.xml相关的设置如下:

<servers>
<server>
    <id>docker-repo</id>
    <username>admin</username>
    <password>填写harbor仓库的登录密码</password>
    <configuration>    
      <email>admin@example.org</email>
    </configuration>
  </server>
  </servers>

步骤1的 <serverId>docker-repo</serverId>必须和上面的id一致。

4. 然后执行docker image 构建命令。如下所示:

下面命令会在10.122.61.201 上构建docker image,但是不会从10.122.61.201把image push到 10.122.61.205上

 # mvn clean package -Dmaven.test.skip=true docker:build

下面命令会在10.122.61.201 上构建docker image. 如果构建没有问题,还会自动把该镜像推到镜像服务器 10.122.25.206上。

 # mvn clean package -Dmaven.test.skip=true -DpushImage docker:build

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值