SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐)

场景:

由于公司项目需要,需要使用部署微服务项目,而之前都是使用tomcat部署,操作十分繁琐。最近正好在学习Docker,利用Docker容器做部署尝试

需求:

  • 使用Docker部署服务
  • 支持idea插件,一键操作构建、推送镜像、运行
  • 单个镜像需根据不同端口部署多个容器
  • 日志持久化

必要软件

服务器(我的版本为CentOS:7.9)

  • Docker(需要开通远程访问,正式环境请使用证书加密,我这里测试用无加密)
  • Harbor 镜像仓库(可选)

开发端

  • Docker Desktop (支持本地运行docker-compose,如果不用docker-compose插件可以不用)下载地址
  • 桌面版docker必要插件下载地址
  • docker-comopse 下载地址
  • IDEA(废话)
  • docker插件 (可选,在idea插件市场下载,名字就叫Docker)

在idea中配置docker

SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐)_第1张图片

目录结构:

SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐)_第2张图片

父项目配置(关键配置):

pom.xml


    
    192.168.10.10
    
    ${docker.host}
    
    http://${docker.host}:2375
    
    library
    
    8080


... 


    
        
            
            
                com.spotify
                docker-maven-plugin
                1.2.0
                
                    
                    docker-harbor
                    ${docker.remote}
                    
                    ${docker.repostory}/${docker.registry.name}/${project.artifactId}
                    openjdk:8u282-jdk
                    作者
                    
                        8080
                        Asia/Shanghai
                    
                    
                    mkdir -p /epark/logs && ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
                    /epark
                    
                    ["java","-Djava.security.egd=file:/dev/./urandom","-jar","${project.build.finalName}.jar","--server.port=${PORT}"]
                    
					
                    http://${docker.repostory}
                    
                    true
                    
                        
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
            
            
                com.dkanejs.maven.plugins
                docker-compose-maven-plugin
                2.5.1
                
                	
                    ${project.basedir}/../docker-compose.yml
                    1.22
                    ${docker.remote}
                    
                        
                        ${port}
                        ${docker.repostory}
                        ${project.build.finalName}
                        
                        ${project.build.finalName}-${port}
                        


                    
                
            
        
    

注意,${project.artifactId}引用的项目构件ID只能是小写

docker-compose.yml

version: '3.4'
services:
  eparking:
    # 镜像
    image: ${host}/library/${name}:latest
    # 容器名
    container_name: ${name}-${port}
    # 开机自启(自选)
    #restart: always
    # 环境配置
    environment:
      # 端口
      - PORT=${port}
    # 端口映射
    ports:
      - "${port}:${port}"
    # 卷映射,这里日志根据自己项目输出位置调整
    volumes:
      - "/log/${name}/${port}:/logs/"

配置了仓库的话需要配置Maven的settings.xml的账号密码


    
        docker-harbor
        仓库用户名
        仓库密码
    

子项目配置(关键配置)

pom.xml




	8082


... 


    
    	
        
            com.spotify
            docker-maven-plugin
        
        
        
            com.dkanejs.maven.plugins
            docker-compose-maven-plugin
        
    

如果一切顺利maven中会出现docker和docker-compse插件
先执行docker:build构建,再执行docker-compose:up启动

SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐)_第3张图片

成功后可以查看docker容器启动情况了,我这里使用的是docker插件

SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐)_第4张图片

好了,这功能花费了我很长时间,最终实现了这些功能。可能还有些小细节没展示出来,可以尽管提问

到此这篇关于SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动的文章就介绍到这了,更多相关springboot docker idea多容器启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(SpringBoot+Docker+IDEA 实现一键构建+推送、运行、同镜像多容器启动(推荐))