IDEA 集成 Docker 实现一键部署
开始第一步前先看下我的IDEA版本,IntelliJ IDEA 2023.1.2 (Ultimate Edition),如图
由于我使用的是新版IDEA,设置-Build,Execution,Deployment自带Docker,如果是旧版需要按照Docker tool插件,这里不再赘述,网上有教程
接下来就是开启2375端口
vim /usr/lib/systemd/system/docker.service
进入daemon配置文件,修改
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock
重新加载配置文件
systemctl daemon-reload
重新启动Docker service(docker如果有正在运行的容器,建议先停止docker stop containerID再重启)
systemctl restart docker.service
查看端口是否开启
netstat -nptl
正式开始
- 第一步:如图配置docker仓库URL
配置后当connecting变成successfully说明连接成功,此时我们对的IDEA就成功和Docker建立连接了。接下来我们就可以去配置项目以便打包部署至Docker了(如果连接时请求拒绝或超时,那么很有可能是你开启了防火墙的缘故,要么关闭防火墙,要么添加以下命令)
iptables -I INPUT -s 39.170.xxx.xxx(本机公网IP地址) -p tcp --dport 2375 -j ACCEPT (-I不是-l,大写i)
-
第二步:项目配置(pom.xml)
<groupId>tech.wedev.demo</groupId> <artifactId>demo</artifactId> <version>0.0.1.RELEASE</version> <packaging>jar</packaging> <name>demo</name> <description>demo</description> <properties> <java.version>8</java.version> <!--设置时间戳--> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> <!--设置docker image 前缀--> <docker.prefix>demo</docker.prefix> </properties> <dependencies> 省略中间的依赖··· </dependencies> <build> <plugins> <plugin><!--springboot的打包插件--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!-- docker插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--设置镜像名称--> <imageName>${docker.prefix}/${project.artifactId}_${maven.build.timestamp}</imageName> <!-- docker远程服务器地址 --> <dockerHost>http://127.0.0.1:2375</dockerHost> <!--设置目录,该目录下放dockerfile--> <dockerDirectory>${project.basedir}</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
-
第三步,编写Dockerfile
FROM java:8 MAINTAINER demo VOLUME /tmp COPY demo-0.0.1.RELEASE.jar demo-1.0.0.jar EXPOSE 9081 ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]
打包项目:(如果项目有test,可以点击'Skip Tests'后再打包)
如果有本地修改记录,不用提交GitHub仓库,直接打包即可
打包完成后,镜像也制作完成了
- 第四步,在IDEA中进行项目部署
右键刚刚制作的镜像
Create Docker Configuration
绑定端口,Port Bindings
容器创建成功后,自动启动容器
可以看到容器里的项目已经启动了
-------------------------完-------------------------
遇到的问题 我在操作的过程中,碰到两个问题一个是打包的时候报There are test failures错误;一个是容器创建成功后,容器启动时报no main manifest attribute, in demo-1.0.0.jar错误。
解决:第一个问题就是打包的时候直接Skip Tests就好了,第二个问题参考:jar运行报错no main manifest attribute
参考文章:
注意:本文归作者所有,未经作者允许,不得转载