Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务
vi /lib/systemd/system/docker.service

改写以下内容

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

Idea使用Docker插件实现maven打包自动构建镜像_第1张图片

  • 重启服务
#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker.service

此时docker已经开放了2375端口,使用外部主机访问

http://docker:2375/info

IDEA 集成Docker
  • 安装Docker 插件
    Idea使用Docker插件实现maven打包自动构建镜像_第2张图片

  • 配置docker服务地址

Idea使用Docker插件实现maven打包自动构建镜像_第3张图片

点击view->services,打开docker的操作面板

Idea使用Docker插件实现maven打包自动构建镜像_第4张图片
双击docker01可以看到此docker服务下镜像和容器

Idea使用Docker插件实现maven打包自动构建镜像_第5张图片

右击docker镜像,可以创建新的容器,并且可以监控容器日志输出,docker的日志收集是将容器内的标准输出以及错误输出重定向到了宿主机的某个文件中,这样就可以看到容器的运行信息了。

Idea使用Docker插件实现maven打包自动构建镜像_第6张图片

配置maven插件,实现打包后自动生成镜像并启动容器
  • 在maven中配置docker打包插件
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>1.0.0version>
                <configuration>
                    
                    <imageName>${project.artifactId}imageName>
                    
                    <imageTags>
                        <imageTag>latestimageTag>
                    imageTags>
                    
                    <baseImage>javabaseImage>
                    
                    <maintainer>[email protected]maintainer>
                    <runs>
                        <run>mkdir -p /opt/java/run>
                    runs>
                    
                    <workdir>/ROOTworkdir>
                    <cmd>["java", "-version"]cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]entryPoint>
                    
                    
                    <dockerHost>http://docker:2375dockerHost>
                    
                    <resources>
                        <resource>
                            <targetPath>/ROOTtargetPath>
                            
                            <directory>${project.build.directory}directory>
                            
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                configuration>
            plugin>

这个插件的作用就是模拟一个Dockerfile,然后告诉docker服务打包一个镜像。

在cmd终端运行 mvn clean package docker:build命令可以构建一个镜像,其中clean package这两个是常用的插件命令,maven内置好了,而docker:build 这个是作用于package后的生命周期的build的阶段,作用就是将打好的jar包构建成一个镜像。

Idea使用Docker插件实现maven打包自动构建镜像_第7张图片
Idea使用Docker插件实现maven打包自动构建镜像_第8张图片

配置package的docker-build插件

当执行package生命周期的时候,设置goal目标,进行docker镜像的构建


<executions>
	<execution>
		<id>build-imageid>
		
		<phase>packagephase>
		<goals>
			
			<goal>buildgoal>
		goals>
	execution>
executions>

配置上这个以后,只要每次进行package就可以自动生成新的镜像。

完整的pom.xml如下:

    <build>
        <finalName>appfinalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombokgroupId>
                            <artifactId>lombokartifactId>
                        exclude>
                    excludes>
                configuration>
            plugin>


            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>1.0.0version>
                <configuration>
                    
                    <imageName>${project.artifactId}imageName>
                    
                    <imageTags>
                        <imageTag>latestimageTag>
                    imageTags>
                    
                    <baseImage>javabaseImage>
                    
                    <maintainer>[email protected]maintainer>
                    <runs>
                        <run>mkdir -p /opt/java/run>
                    runs>
                    
                    <workdir>/ROOTworkdir>
                    <cmd>["java", "-version"]cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]entryPoint>
                    
                    
                    <dockerHost>http://docker:2375dockerHost>
                    
                    <resources>
                        <resource>
                            <targetPath>/ROOTtargetPath>
                            
                            <directory>${project.build.directory}directory>
                            
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                configuration>
                <executions>
                    <execution>
                        <id>build-imageid>
                        
                        <phase>packagephase>
                        <goals>
                            
                            <goal>buildgoal>
                        goals>
                    execution>
                executions>
            plugin>


        plugins>
    build>

添加上这个打包插件以后,每执行package操作,就会执行docker:build,从而根据配置信息再次根据最新打的jar包创建出一个镜像,然后可以在idea中运行了。

你可能感兴趣的:(CI/CD,intellij-idea,docker,maven)