将微服务部署到云服务器是微服务架构中的常见操作,以下是三种常见的部署方式:使用 Spring Boot 内嵌 Tomcat、Docker 容器化、和 外部 Tomcat 部署。
这是 Spring Boot 微服务最常用、也是最简单的部署方式。Spring Boot 项目内置了 Tomcat 容器,打包后的应用可以直接运行,无需依赖外部的应用服务器。
使用 maven
或 gradle
打包 Spring Boot 项目,生成一个 .jar
文件。
mvn clean package
将打包后的 .jar
文件上传到云服务器的指定目录,通常使用 scp
或通过云服务器提供的文件上传工具。
java -version
在云服务器上,进入到 JAR 文件所在的目录,使用以下命令运行 Spring Boot 应用:
java -jar myapp.jar
应用启动后,Spring Boot 内嵌的 Tomcat 容器将自动启动并监听配置文件中指定的端口(默认 8080)。
1.1.5 后台运行和监控
如果希望应用在后台运行,可以使用 nohup
命令:
nohup java -jar myapp.jar > log.txt 2>&1 &
使用 Docker 是现代微服务架构中非常流行的部署方式,特别适合需要快速扩展和跨平台运行的场景。将 Spring Boot 应用容器化,可以保证一致的运行环境,便于快速部署和管理。
在 Spring Boot 项目根目录下创建一个 Dockerfile
,定义应用如何容器化。
# 基于官方的 OpenJDK 镜像
FROM openjdk:11-jre-slim
# 将 jar 文件复制到容器中
COPY target/myapp.jar /app.jar
# 暴露应用的端口
EXPOSE 8080
# 运行 jar 文件
ENTRYPOINT ["java", "-jar", "/app.jar"]
使用 docker build
命令构建 Docker 镜像:
docker build -t myapp .
可以直接将镜像文件复制到云服务器。
在云服务器上运行 Docker 容器:
docker run -d -p 8080:8080 myapp
此命令将容器中的 8080 端口映射到主机的 8080 端口,并在后台运行容器。
可以使用 docker ps 查看正在运行的容器,使用 docker logs 查看日志。
docker ps
docker logs
将 Spring Boot 项目打包成 WAR 文件,部署到外部的 Tomcat 容器中。这是较为传统的部署方式,适合一些需要统一管理多个 Web 应用的场景。
在 pom.xml
文件中修改打包类型为 war
:
war
确保 spring-boot-starter-tomcat
依赖设置为 provided
,以便让外部 Tomcat 管理 Web 容器:
org.springframework.boot
spring-boot-starter-tomcat
provided
运行 mvn clean package
,将 Spring Boot 项目打包成 WAR 文件:
mvn clean package
将 myapp.war
文件上传到云服务器的 Tomcat 安装目录 webapps
文件夹中。
在云服务器上启动 Tomcat,Tomcat 会自动解压 myapp
.war
文件并部署应用:
Tomcat 启动后,可以通过浏览器访问应用(如 http://cloudserver:8080/myapp)