美文网首页
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

    简介 可以使用docker-maven-plugin插件来自动构建Docker镜像,但是在官方申明中,Spotif...

网友评论

      本文标题:Maven-docker

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