利用 Maven 创建 Docker 镜像并且推送到私有注册中心


利用 Maven 命令生成项目框架

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

利用 Maven 打包

mvn package
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
//显示 Hello World!
//利用 maven-jar-plugin 就可以指定在 jar 中的 MANIFEST.MF 中Main-Class,才可以直接运行 jar 
java -jar target/my-app-1.0-SNAPSHOT.jar
//显示 Hello World!

利用 Maven 安装包到本地仓库

mvn install

利用 Maven 创建镜像并且推送到Private Registry

首先要修改 pom.xml


  4.0.0
  com.mycompany.app
  my-app
  jar
  1.0-SNAPSHOT
  my-app
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
  
  




    org.springframework.boot
	spring-boot-maven-plugin

        
          org.apache.maven.plugins
          maven-jar-plugin
          3.0.2
          
            
              
                com.mycompany.app.App
              
            
          
        

    com.spotify
    docker-maven-plugin
    0.4.13
    
        
        10.22.17.210:5000/${project.name}:${project.version}
        
        openjdk:8-jdk-slim
        
        ["java", "-jar", "/${project.build.finalName}.jar"]
        
        false
        
            
                /
                
                ${project.build.directory}
                
                ${project.build.finalName}.jar
            
        
		http://10.22.17.210:2375
    






其次必须在服务端启动 Docker Daemon 服务,并且运行私有 Registry。

///// start vi /lib/systemd/system/docker.service /////
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock
///// end vi /lib/systemd/system/docker.service /////
systemctl daemon-reload
systemctl restart docker
docker start myregistry

运行如下命令推送镜像

mvn package
mvn install
mvn docker:build -DpushImage

在服务端运行镜像

docker images

docker run --rm --name myapp  10.22.17.210:5000/my-app:1.0-SNAPSHOT
//显示 Hello World!

参考资料