idea整合docker 实现一键部署

一、Idea集成docker实现镜像打包一键部署

1、Docker开启远程访问

#修改该Docker服务文件
vi /lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

将文件内的 ExecStart注释。 新增如上行。

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375-H unix:///var/run/docker.sock

 

#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker.service
#查看端口是否开启
netstat -nlpt     #如果找不到netstat命令,可进行安装。yum install net-tools
#直接curl看是否生效
curl http://127.0.0.1:2375/info

 

2、IDEA安装Docker插件

打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,

在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。

安装后重启Idea。

3、IDEA配置docker

配置docker,连接到远程docker服务。

从File->Settings->Build,Execution,Deployment->Docker打开配置界面

 

连接成功后,在IDEA工具中即可 操作Docker:

 

 

4、docker-maven-plugin

传统过程中,打包、部署、等。

而在持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。

pom.xml


     guoweixin

     
         
             org.springframework.boot
             spring-boot-maven-plugin
             1.0.0
         
         
          
                com.spotify
                docker-maven-plugin
                1.0.0
​
                
                    
                    ${docker.image.prefix}/${project.artifactId}
                    
                    
                        latest
                    
                    
                    java
                    
                    guoweixin [email protected]
                    
                    /ROOT
                    ["java", "-version"]
                    ["java", "-jar", "${project.build.finalName}.jar"]
​
                    
​
                    
                    http://192.168.20.135:2375
​
                    
                    
                        
                            /ROOT
                            
                            ${project.build.directory}
                            
                            ${project.build.finalName}.jar
                        
                    
                
​
            
         
         
     

Dockerfile

如上用docker-maven插件 自动生成如下文件:

FROM java
MAINTAINER guoweixin [email protected]
WORKDIR /ROOT
ADD /ROOT/qfnj-0.0.1-SNAPSHOT.jar /ROOT/
ENTRYPOINT ["java", "-jar", "qfnj-0.0.1-SNAPSHOT.jar"]
CMD ["java", "-version"]

 

 

5、执行命令

对项目进行 打包。并构建镜像 到Docker 上。

mvn clean package docker:build

6、IDEA 操作Docker

 

7、扩展配置

绑定Docker 命令到 Maven 各个阶段

我们可以绑定 Docker 命令到 Maven 各个阶段,

我们可以把 Docker 分为 build、tag、push,然后分别绑定 Maven 的 package、deploy 阶段,

我们只需要执行mvn deploy就可以完成整个 build、tag、push操作了,当我们执行mvn build就只完成 build、tag 操作。


     
    
        build-image
        package
        
            build
        
    
         
     
         tag-image
         package
         
             tag
         
         
             ${docker.image.prefix}/${project.artifactId}:latest
             docker.io/${docker.image.prefix}/${project.artifactId}:${project.version}         
         
    
    
        push-image
        deploy
        
            push
        
        
            docker.io/${docker.image.prefix}/${project.artifactId}:${project.version}       
        
    
    

完整pom.xml如下:


    1.8
    
    guoweixin

        
            org.springframework.boot
            spring-boot-starter-web
        
        .....................

        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            
                com.spotify
                docker-maven-plugin
                1.0.0
​
                
                    
                    ${docker.image.prefix}/${project.artifactId}
                    
                    
                        latest
                    
                    
                    java
                    
                    guoweixin [email protected]
                    
                    /ROOT
                    ["java", "-version"]
                    ["java", "-jar", "${project.build.finalName}.jar"]
​
                    
​
                    
                    http://192.168.20.135:2375
​
                    
                    
                        
                            /ROOT
                            
                            ${project.build.directory}
                            
                            ${project.build.finalName}.jar
                        
                    
                
​
                
                
                    
                        build-image
                        package
                        
                            build
                        
                    
                
​
            
​
        
    

总结:

当我们执行mvn package时,执行 build、tag 操作,

当执行mvn deploy时,执行build、tag、push 操作。

如果我们想跳过 docker 某个过程时,只需要:

  • -DskipDockerBuild 跳过 build 镜像

  • -DskipDockerTag 跳过 tag 镜像

  • -DskipDockerPush 跳过 push 镜像

  • -DskipDocker 跳过整个阶段

例如:我们想执行 package 时,跳过 tag 过程,那么就需要mvn package -DskipDockerTag

你可能感兴趣的:(JAVA的一些学习材料,docker)