关于IDEA部署 springboot应用到Docker中的N多种方法之 一
前言随着容器化流行,k8s流行,解放生产力真的很重要,那么久看看集中在docker中部署微服务的方式吧一、Idea是什么?Springboot是什么?Docker是什么?不多解释了,Idea 开发工具,Springboot是开发框架,Docker运行环境二、使用步骤1. 增加部署文件01)整体的项目结构如图,我在根目录下的deploy 下创建了 Dockerfile 和build.sh 这个在后面
前言
随着容器化流行,k8s流行,解放生产力真的很重要,那么久看看集中在docker中部署微服务的方式吧
一、Idea是什么?Springboot是什么?Docker是什么?
不多解释了,Idea 开发工具,Springboot是开发框架,Docker运行环境
二、使用步骤
1. 增加部署文件
01)整体的项目结构如图,我在根目录下的deploy 下创建了 Dockerfile 和build.sh 这个在后面的其他部署方式中会用到;
所说的部署文件,就是Docker的配置文件,这是一个非常强大的东西;具体的语法可以找相关的文档看看,这里我只做一个简单的部署样例;
具体内容:
FROM openjdk:8
VOLUME /tmp
ADD *.jar app.jar
EXPOSE 8099
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
2, 在项目于中的pom.xml文件中加入这个插件
<!-- docker -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!-- 这个注释了,少数的机器可能会报错,版本兼容问题 -->
<!-- <version>1.0.0</version>-->
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名,这里是我们的项目名-->
<imageName>${project.artifactId}</imageName>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定我们项目中Dockerfile文件的路径-->
<dockerDirectory>${project.basedir}/deploy</dockerDirectory>
<!--指定远程docker 地址-->
<dockerHost>http://127.0.0.1:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar包所在的路径 此处配置的即对应项目中target目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2.使用阶段
2.1 ,安装插件 Docker
配置插件:
找到services 选项卡:
最后利用我们在Maven 中配置的package 命令直接进行编译打包做镜像
日志的输出:
[INFO] Building image docker-k8s-user
Step 1/5 : FROM openjdk:8
---> 5bbce51c9625
Step 2/5 : VOLUME /tmp
---> Running in 51e4c77979bb
Removing intermediate container 51e4c77979bb
---> 0963e6fe1b61
Step 3/5 : ADD *.jar app.jar
---> 6d975dbbe77b
Step 4/5 : EXPOSE 8099
---> Running in 46b65c077f25
Removing intermediate container 46b65c077f25
---> 9706f14c9a48
Step 5/5 : ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
---> Running in c70aeb012abe
Removing intermediate container c70aeb012abe
---> df85a6cdedb7
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built df85a6cdedb7
Successfully tagged docker-k8s-user:latest
[INFO] Built docker-k8s-user
[INFO] Tagging docker-k8s-user with latest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.649 s
[INFO] Finished at: 2021-12-16T10:54:53+08:00
生成好的镜像:
配置容器端口到外部服务的映射
在Containers中找到这个服务,启动
最后,访问下吧
http://127.0.0.1:10001/userinfo/sayHello
总结
这个部署方式只是众多方式中的一种,我下一次会用shell 脚本的方式,集成 maven打包,docker 构建镜像,启动 做到一个shell命令中这样也可以完成;写的菜不要喷
更多推荐
所有评论(0)