使用Idea Docker插件 部署SpringBoot项目 到 Docker 容器
时间: 2019-12-06来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
引用:
https://www.cnblogs.com/hsz-csy/p/9488469.html
Intellij IDEA快速实现Docker镜像部署
idea2018 如何将springboot项目打包成只有一个jar包!(应该也适用于其它的maven创建的项目)
Centos 系统安装 Docker 软件教程在这里暂且忽略;
需要先做的是开放我们Centos 中 Docker的远程连接功能,操作过程如下 方法一: #编辑Docker配置文件 vim /usr/lib/systemd/system/docker.service #注释ExecStart这行 #加上新行 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 #直接curl看是否生效 curl http://127.0.0.1:2375/info 方法二: vim /etc/sysconfig/docker #重新加载配置文件,重启docker systemctl daemon-reload systemctl start docker #自己只用过方法一!!! #查看进程 netstat -tulp #PS:Centos7没有netstat,所以要先下载。 yum install net-tools #防火墙开放2375端口号 firewall-cmd --zone=public --add-port=2375/tcp --permanent #重启防火墙 firewall-cmd --reload
接下来操作Idea这边,为了方便易懂,直接截图操作~
File-->Setting-->Plugins-->Browse Repositories--> 搜索Docker-->安装重启

然后连接我们在Centos 中安装的Docker ,File-->Setting-->按下图操作
操作成功后会在下面的窗口栏中出现Docker的窗口,到此远程连接Docker成功,如下图:

接下来我们开始部署项目:
首先在项目根目录(与src||target同级,)创建DockerFile 文件,简单如下: FROM java #指定作者信息 MAINTAINER chyf #数据卷信息 VOLUME /tmp #添加jar包到镜像中,Copy Add 指令采用的是相对路径,也是将DockerFile建立在根路径的原因 出现问题: #Error: ResponseItem.ErrorDetail[code=<null>,message=COPY failed: stat /var/lib/docker/tmp/docker-builder022003770/target/litemall-all-0.1.0-exec.jar: no such file or directory] Failed to deploy 'mall-api Dockerfile: litemall-all/DockerFile': COPY failed: stat /var/lib/docker/tmp/docker-builder022003770/target/litemall-all-0.1.0-exec.jar: no such file or directory COPY ./target/litemall-all-0.1.0.jar mall-all.jar 启动jar RUN sh -c 'touch mall-all.jar' ENV JAVA_OPTS="" #暴露容器端口 EXPOSE 8080 #ENTRYPOINT 为容器启动后执行的命令 ENTRYPOINT ["java","-jar","mall-all.jar"]
配置Idea 启动配置


启动:

镜像生成完毕、容器也启动了,但是点击控制台的Log,发现【no main manifest attribute, in mall-all.jar】的异常,将 COPY ./target/litemall-all-0.1.0.jar mall-all.jar 换成 COPY ./target/litemall-all-0.1.0-exec.jar mall-all.jar
也会报错,信息大概是找不到主入口启动类,分析错误原因,找了许多的blog看,大概是因为在pom文件中配置做了如下配置: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration><!--指定该Main Class为全局的唯一入口--> <mainClass>org.linlinjava.litemall.Application</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--> </goals> </execution> </executions> </plugin>
在写blog的过程中,已经不报错了,所以现在认为这种配置没有问题,有问题的根本症结可能是配置了maven打包将xxx.jar 和 xxx-exec.jar 分开打包的原因吧!现在我把如上代码在pom中去掉依然可以运行,那就直接去掉吧!咱也不知道干嘛用的。
问题:
在自己操作过程中,通过maven install 操作打成的jar包,包含 xxx.jar 和 xxx.exec.jar,经过测试发现这两个jar都不能启动,百思不得其解,maven自己玩的也不深,自己觉得可以通过maven-compile-plugin 来解决,来配置打包过程中文件的输出路径!这个暂且放在这里,后面在研究!
这里通过另一种方法,且行得通!如图操作!






以上操作之后会在src/main/java 文件夹中生成一个文件,如下图:



到这里Idea 远程连接Docker就结束了,下一章进行 运用持续集成工具 Jenkins 部署项目到 Docker 容器中。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行