美文网首页
Maven-docker

Maven-docker

作者: quanCN | 来源:发表于2021-02-05 18:37 被阅读0次

    简介

    可以使用docker-maven-plugin插件来自动构建Docker镜像,但是在官方申明中,Spotify官方已经不再推荐使用该插件,使用dockerfile-maven-plugin进行代替,官方github

    注意事项

    • 该插件依赖一台装有Docker daemon的Host完成镜像的构建
    • 由于该插件需要访问Docker Host,因此要求Docker Host打开TCP管理端口,并允许访问
    • 使用该插件的机器需要配置DOCKER_HOST选项,指向Docker Host对应端口
    • 该插件构建和发布镜像依赖于镜像仓库,需要用户提供镜像仓库的登录信息,支持POM设置和Settings设置

    docker相关配置

    • 环境变量
      环境变量应该存在
      export DOCKER_HOST=tcp://xxxxx:2375
    • 远程连接服务
      docker的安装机应该保证开启远程连接服务
    • 验证方式
      curl xxxxx:2375/version

    构建Docker镜像

    • pom.xml
      <properties>
          <java.version>1.8</java.version>
          <docker.image.prefix>xxxx</docker.image.prefix>
      </properties>
      
      <build>
         <plugins>
              <plugin>
                  <groupId>com.spotify</groupId>
                  <artifactId>dockerfile-maven-plugin</artifactId>
                  <version>1.4.13</version>
                  <executions>
                      <execution>
                          <id>default</id>
                          <goals>
                              <goal>build</goal>
                              <goal>push</goal>
                          </goals>
                      </execution>
                  </executions>
                  <configuration>
                      <repository>${docker.image.prefix}/dockertest</repository>
                      <tag>${project.version}</tag>
                      <buildArgs>
                          <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                      </buildArgs>
                  </configuration>
              </plugin>
         </plugins>
      </build>
      
    • 编写Dockerfile,且Dockerfile应该与pom.xml在同级目录下
      FROM openjdk:latest
      ARG JAR_FILE
      ADD target/${JAR_FILE} app.jar
      CMD ["java", "-jar", "/app.jar"]
      
    • 生成镜像
      mvn dockerfile:buildmvn package即可生成镜像

    推送Docker镜像

    Docker镜像构建好后,我们还可以使用该插件将镜像推送到Docker仓库,如Docker Hub。

    • 在settings.xml中配置server
      <servers>
          <server>
              <id>docker.io</id>
              <username>xxxxxx</username>
              <password>xxxxxxxx</password>
          </server>
      </servers>
      
    • 指定useMavenSettingsForAuth为true
      <configuration>
          <repository>${docker.image.prefix}/dockertest</repository>
          <tag>${project.version}</tag>
          <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
          <buildArgs>
              <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
          </buildArgs>
      </configuration>
      
    • 推送镜像
      mvn deploy
      或者
      mvn dockerfile:push

    注:镜像的前缀必须跟docker.hub的用户名保持一致

    相关文章

      网友评论

          本文标题:Maven-docker

          本文链接:https://www.haomeiwen.com/subject/tnsgtltx.html