微服务 Springboot 项目搭建(一、项目创建)

微服务 Springboot 项目搭建(二、idea本地构建、编译、一键部署服务器运行Docker镜像)

微服务 Springboot 项目搭建(三、项目集成日志log4j框架)

微服务 Springboot 项目搭建(四、first-docker Springboot 项目开发)


文章目录

  • 准备事项
  • 一、构建Docker镜像
  • 1.1 修改pom.xml文件
  • 1.2 新增HelloController 文件
  • 1.3 application.properties文件
  • 1.4 Dockerfile文件
  • 二、创建 Docker Connection
  • 2.1 添加services窗口
  • 2.2 New Docker Connection
  • 2.3 编辑 Modify Run Configuration
  • 2.4 运行 Run 'Dockerfile'
  • 2.5 登录虚拟机查看容器信息
  • 2.6 浏览器请求接口
  • 2.7 Linux机器中Docker容器与镜像默认存放位置



准备事项

  1. idea工具
  2. 一台安装好docker 的虚拟机
    (安装docker网址:)

一、构建Docker镜像

代码仓库网址:https://gitee.com/zbfiles/fast-image-deploy.git

1.1 修改pom.xml文件

<build>
        <!-- 项目名称 -->
        <finalName>first-docker</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

完整的pom.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.manchi</groupId>
    <artifactId>first-docker</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>first-docker</name>
    <description>first-docker</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- Web支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- lombok依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 测试 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <!-- 项目名称 -->
        <finalName>first-docker</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

1.2 新增HelloController 文件

@RestController
public class HealthController {

    @GetMapping("/health")
    public String health() {
        return "Hello World!";
    }
}

1.3 application.properties文件

spring.application.name=first-docker
server.port=8080

1.4 Dockerfile文件

与src同级目录新建Dockerfile文件

idea新增一个微服务_idea新增一个微服务

FROM openjdk:8
WORKDIR /usr/local
ADD ./target/first-docker.jar .
CMD ["java","-jar","first-docker.jar"]
EXPOSE 8080

二、创建 Docker Connection

2.1 添加services窗口

idea新增一个微服务_java_02

2.2 New Docker Connection

idea新增一个微服务_java_03


idea新增一个微服务_intellij-idea_04

idea新增一个微服务_java_05

idea新增一个微服务_idea新增一个微服务_06

idea新增一个微服务_spring_07

2.3 编辑 Modify Run Configuration

idea新增一个微服务_spring_08


idea新增一个微服务_docker_09

idea新增一个微服务_java_10


idea新增一个微服务_intellij-idea_11


idea新增一个微服务_intellij-idea_12


idea新增一个微服务_idea新增一个微服务_13

idea新增一个微服务_idea新增一个微服务_14

2.4 运行 Run ‘Dockerfile’

idea新增一个微服务_intellij-idea_15


idea新增一个微服务_spring_16

2.5 登录虚拟机查看容器信息

docker images 
docker ps -a

idea新增一个微服务_idea新增一个微服务_17

2.6 浏览器请求接口

idea新增一个微服务_docker_18


可能是8000或者8080端口没开

# 查看firewalld状态,发现当前是dead状态,即防火墙未开启
systemctl status firewalld

# 开启防火墙,没有任何提示即开启成功。
systemctl start firewalld

# 查看已经开放的端口
firewall-cmd --list-ports

# 开启端口以后,重启防火墙生效
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 重启防火墙
firewall-cmd --reload #重启 
firewall systemctl stop firewalld.service #停止
firewall systemctl disable firewalld.service #禁止firewall开机启动

# 防火墙状态控制
systemctl stop|start|restart|reload firewalld
#查看防火墙规则
firewall-cmd --list-all
# 查询8080端口是否开放
firewall-cmd --query-port=8080/tcp
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
#注意分清楚linux的版本 命令会有所不同
一、只开放端口
# 开放8080端口
#移除880端口
firewall-cmd --zone=public --permanent --remove-port=8080/tcp
二、限制开放端口和ip
#添加ip加端口规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="ip地址" port protocol="tcp" port="3306" accept"
#移除ip加端口规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="ip地址" port protocol="tcp" port="8081-8088" accept"

#重载刷新规则
firewall-cmd --reload

访问:http://192.168.124.134:8000/health

idea新增一个微服务_spring_19

2.7 Linux机器中Docker容器与镜像默认存放位置

Docker容器与镜像存放位置参考文档:

cd /var/lib/docker - 容器与镜像存放在此目录下
镜像位置: /var/lib/docker/image
容器位置: /var/lib/docker/containers

idea新增一个微服务_intellij-idea_20


idea新增一个微服务_java_21