关于IDEA部署 springboot应用到Docker中的N多种方法之 一

2022-08-27 08:45:21

前言

随着容器化流行,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命令中这样也可以完成;写的菜不要喷

  • 作者:凌晨四点~
  • 原文链接:https://blog.csdn.net/YaphetS_/article/details/121970071
    更新时间:2022-08-27 08:45:21