您现在的位置是:首页 >技术杂谈 >Docker快速部署springboot项目网站首页技术杂谈

Docker快速部署springboot项目

技术蜗牛-阿春 2023-07-09 00:00:03
简介Docker快速部署springboot项目

有很多开发者在项目部署过程中都会遇到一些繁琐的问题,比如打包、上传、部署等。而使用Docker可以非常方便地解决这些问题。在本文中,将详细讲解如何使用IDEA中的docker打包插件,将代码打包并直接发布到服务器上。这样,我们就可以非常快速地完成项目的部署。当然,您可能会有疑问,即:我在IDEA中编写的代码,如何部署到服务器上呢?下面,我们将详细描述部署过程。

一、配置docker的远程访问

这步非常的关键,是我们IDEA和服务器产生关联的重要步骤:

1、修改 /lib/systemd/system/docker.service

vim /lib/systemd/system/docker.service

在修改Docker daemon的启动选项,使其可以监听来自远程客户端的Docker API请求,-H参数用于指定监听的地址和端口,这里使用tcp://0.0.0.0:2375表示监听所有网络接口的2375端口。

//将
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
//替换为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2、重启docker

systemctl daemon-reload
systemctl restart docker

3、测试是否修改成功

http://IP:2375/version

二、IDEA中进行配置

1、具体的配置如下:

2、配置后IDEA的services中会出现docker,如下图:

三、配置dockerfile文件

FROM openjdk
EXPOSE 8044
VOLUME /tmp
ADD shangjian-sap.jar  /shangjian-sap.jar
ENTRYPOINT ["java","-server","-Xms1024m","-Xmx1024m","-Dspring.profiles.active=local","-jar","shangjian-sap.jar"]

这个 Dockerfile 中的指令说明如下:

  • FROM:指定我们的镜像基于哪个镜像构建。
  • EXPOSE:声明容器运行时需要监听的端口。
  • COPY:将应用程序的 jar 文件复制到容器的文件系统中。
  • ENTRYPOINT:定义容器启动时需要运行的命令,这里是运行 jar 文件。

四、在pom文件中配置docker打包插件

 <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.0</version>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <!--使用docker-maven-plugin插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定生成的镜像名-->
                    <imageName>docker/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!-- 指定 Dockerfile 路径-->
                    <dockerDirectory>./</dockerDirectory>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://自己IP: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>
        </plugins>
    </build>

五、打包构建镜像

1、maven进行打包,以及docker构建镜像:

2、创建docker容器

步骤一

步骤二

步骤三

步骤四

六、总结

总的来说,本文通过介绍在IDEA中使用docker插件实现快速打包并部署项目的方法。这种部署方式适用于开发过程中需要频繁打包部署的场景。当然,还有其他的部署方式,如使用Jenkins等自动化工具。不过无论采用哪种方式,核心的操作步骤都类似:打包项目并将打好的包上传到服务器,最后启动项目。具体要看实际情况和需求,选择最适合自己的部署方式。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。