微服务 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容器与镜像默认存放位置
准备事项
- idea工具
- 一台安装好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文件
FROM openjdk:8
WORKDIR /usr/local
ADD ./target/first-docker.jar .
CMD ["java","-jar","first-docker.jar"]
EXPOSE 8080
二、创建 Docker Connection
2.1 添加services窗口
2.2 New Docker Connection
2.3 编辑 Modify Run Configuration
2.4 运行 Run ‘Dockerfile’
2.5 登录虚拟机查看容器信息
docker images
docker ps -a
2.6 浏览器请求接口
可能是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
2.7 Linux机器中Docker容器与镜像默认存放位置
Docker容器与镜像存放位置参考文档:
cd /var/lib/docker - 容器与镜像存放在此目录下
镜像位置: /var/lib/docker/image
容器位置: /var/lib/docker/containers