IDEA+Docker插件一键部署SpringBoot项目到远程服务器

文章目录

  • [1. 服务端](#1. 服务端)
    • [1.1 安装Docker](#1.1 安装Docker)
    • [1.2 Docker放开远程连接](#1.2 Docker放开远程连接)
    • [1.3 重启Docker](#1.3 重启Docker)
    • [1.4 开放端口](#1.4 开放端口)
      • [1.4.1 云端](#1.4.1 云端)
      • [1.4.2 服务器内部防火墙指令](#1.4.2 服务器内部防火墙指令)
  • [2.IntelliJ IDEA](#2.IntelliJ IDEA)
    • [2.1 安装IDEA](#2.1 安装IDEA)
    • [2.2 安装Docker插件](#2.2 安装Docker插件)
    • [2.3 SSH Configurations](#2.3 SSH Configurations)
    • [2.4 Docker选择对应的SSH](#2.4 Docker选择对应的SSH)
    • [2.5 Dockerfile](#2.5 Dockerfile)
      • [2.5.1 Dockerfile](#2.5.1 Dockerfile)
      • [2.5.2 Dockerfile Edit Run Configuration](#2.5.2 Dockerfile Edit Run Configuration)
        • [2.5.2.1 Maven全局指令](#2.5.2.1 Maven全局指令)
        • [2.5.2.2 配置镜像映射端口](#2.5.2.2 配置镜像映射端口)
        • [2.5.2.3 补充说明1](#2.5.2.3 补充说明1)
        • [2.5.2.4 补充说明2](#2.5.2.4 补充说明2)
    • [2.6 Maven](#2.6 Maven)
      • [2.6.1 安装Maven](#2.6.1 安装Maven)
      • [2.6.2 pom.xml 相关Docker部署配置](#2.6.2 pom.xml 相关Docker部署配置)

1. 服务端

1.1 安装Docker

默认安装Docker,直接跳过

1.2 Docker放开远程连接

shell 复制代码
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service

## 添加 -H tcp://0.0.0.0:2375
	......
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
	......

1.3 重启Docker

shell 复制代码
systemctl daemon-reload
systemctl start docker

1.4 开放端口

1.4.1 云端

开放防火墙的 9090 端口

  • 如果你使用的是云服务器,在安全组中放行 9090 端口
  • 如果你安装了宝塔,除了在安全组中放行 9090 端口,还要在宝塔中放行 9090
    端口

1.4.2 服务器内部防火墙指令

shell 复制代码
# ubuntu
sudo ufw allow 9090
sudo ufw reload

# centos
sudo firewall-cmd --zone=public --add-port=9090 /tcp --permanent
sudo firewall-cmd --reload

2.IntelliJ IDEA

版本:IntelliJ IDEA 2023.1 (Ultimate Edition)

需要部署时候,建议使用管理员运行IDEA

2.1 安装IDEA

默认安装IDEA,跳过安装

2.2 安装Docker插件

File | Settings | Plugins

2.3 SSH Configurations

File | Settings | Tools | SSH Configurations

2.4 Docker选择对应的SSH

File | Settings | Build, Execution, Deployment | Docker

2.5 Dockerfile

fdy-live-user-provider/docker/Dockerfile

2.5.1 Dockerfile

text 复制代码
FROM openjdk:17-jdk-alpine
VOLUME /tmp
COPY target/fdy-live-user-provider-docker.jar /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.5.2 Dockerfile Edit Run Configuration

编辑Dockerfile配置框

重点:Context folder 里面填写项目的根<fdy-live-user-provider>, 默认fdy-live-user-provider/docker,会导致检索不了target文件夹,从而获取不了对应的Jar包

2.5.2.1 Maven全局指令

clean package -Dautoconfig.interative=false -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

2.5.2.2 配置镜像映射端口
2.5.2.3 补充说明1
2.5.2.4 补充说明2

2.6 Maven

2.6.1 安装Maven

默认安装,跳过

2.6.2 pom.xml 相关Docker部署配置

重点:<build>标签部分

xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.idea</groupId>
        <artifactId>fdy-live-app</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <version>1.0.1</version>

    <artifactId>fdy-live-user-provider</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
    </properties>

    <dependencies>
    </dependencies>

    <build>
        <finalName>${artifactId}-docker</finalName>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <!-- 当mvn执行install操作的时候,执行docker的build -->
                    <execution>
                        <id>build</id>
                        <phase>install</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--覆盖相同标签镜像-->
                    <forceTags>true</forceTags>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <imageName>${project.build.finalName}</imageName>
                    <!--指定Dockerfile文件的位置-->
                    <dockerDirectory>${project.basedir}/docker</dockerDirectory>
                    <!-- 指定jar包路径,这里对应Dockerfile中复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- 将下边目录的内容,拷贝到docker镜像中 -->
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 项目基于maven pom多模块的开发的,需要设置goal-repackage属性为true,否则打包后文件依赖文件没有一起打包,然后镜像内没有可以运行的程序文件 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
相关推荐
liuyang___11 分钟前
Spring boot+mybatis的批量删除
java·spring boot·mybatis
xdpcxq10291 小时前
CentOS 8 停止维护后通过 rpm 包手动安装 docker
linux·docker·centos
chengong99881 小时前
Spring Boot启动流程及源码实现深度解析
java·spring boot·后端
liuyang___1 小时前
spring boot+mybaits多条件模糊查询和分页查询
java·spring boot·后端
油丶酸萝卜别吃2 小时前
springBoot中不添加依赖 , 手动生成一个token ,并校验token,在统一拦截器中进行校验 (使用简单 , 但是安全性会低一点)
java·spring boot·后端
kyle~3 小时前
docker
运维·docker·容器
姚毛毛-aione1.com3 小时前
【k8s003】k8s与docker的依赖关系
docker·容器·kubernetes
心向阳光的天域4 小时前
黑马跟学.苍穹外卖.Day08
java·spring boot
小杨4044 小时前
springboot框架项目实践应用九(多数据源路由)
spring boot·后端·架构