介绍

使用maven命令将项目构建为docker镜像

优点

  1. 可以使用maven的变量
  2. 可以和maven指令结合提高部署效率

GitHub - spotify/docker-maven-plugin: INACTIVE: A maven plugin for Docker

配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
      <build>
               <!--指定生成的jar名称-->
              <finalName>${project.name}-v${project.version}</finalName>
      <plugins>
      <plugin>
                      <groupId>com.spotify</groupId>
                      <artifactId>docker-maven-plugin</artifactId>
                      <version>1.1.1</version>
                      <configuration>
                          <!--镜像名称 project.name 和 project.version 都是maven的变量 -->
                          <imageName>仓库地址/${project.name}:v${project.version}</imageName>
                          <!--依赖镜像-->
                          <baseImage>openjdk:8u252-jre</baseImage>
                          <!--工作目录-->
                          <workdir>/code</workdir>
                          <!--编译完后自动将镜像推送到仓库-->
                          <pushImage>true</pushImage>

                          <runs>
                              <!--设置时区-->
                              <run>
                              /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &amp;&amp; echo 'Asia/Shanghai' >/etc/timezone
                              </run>
                          </runs>
                          <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                          <resources>
                            <resource>
                                <directory>${project.build.directory}</directory>
                                <targetPath>/code</targetPath>
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                          </resources>
                      </configuration>
                  </plugin>
                  </plugins>
                  </build>

使用mvn docker:build就可以看到 target文件下面生成了一个docker文件夹,里面有生成的dockerfile和复制进去的jar

常用命令

1
2
3
4
   # 构建镜像
   mvn docker:build
   # 将镜像推送到仓库
   mvn docker:push

常见异常

1
2
3
org.apache.http.impl.execchain.RetryExec execute
I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on project mavenDemo: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: No such file or directory -> [Help 1]

原因是: docker没有启动