使用 docker 部署 spring boot 应用的核心是将应用及其依赖打包为可移植镜像并在支持 docker 的环境(如 ecs)中运行,1. 创建 spring boot 应用并生成可执行 jar 文件;2. 编写 dockerfile,基于 openjdk:17-jdk-slim 镜像,使用 arg 定义构建参数,copy 命令复制 jar 文件,entrypoint 指定启动命令;3. 通过 docker build 命令构建镜像并使用 docker run 在本地测试;4. 可选地将镜像推送到 docker hub;5. 在 ecs 实例中安装 docker,拉取镜像并运行容器,映射 8080 端口;6. 通过公网 ip 访问应用。arg 用于构建时传参且不保留于镜像中,env 设置的环境变量在镜像和容器运行时均有效。优化镜像大小需选择轻量基础镜像、采用多阶段构建、清理缓存、使用 .dockerignore 文件并合理利用分层。监控容器健康可通过 healthcheck 指令、docker stats 命令、集成 prometheus 等监控系统、使用 elk 分析日志或编写自定义脚本实现。对于依赖数据库的应用,可使用 docker-compose.yml 编排多个服务,定义服务间依赖与环境变量,通过 docker-compose up 一键启动所有服务,确保应用与数据库协同运行,完整实现可扩展、可维护的容器化部署方案。

使用 Docker 部署 Spring Boot 应用,核心在于将你的应用及其依赖打包成一个可移植的镜像,然后在任何支持 Docker 的环境中运行,包括云服务 ECS。这不仅简化了部署流程,还提高了应用的可移植性和可扩展性。
解决方案:
创建 Spring Boot 应用: 如果你还没有 Spring Boot 应用,可以使用 Spring Initializr 创建一个简单的 Web 应用。
编写 Dockerfile: 在 Spring Boot 项目的根目录下创建
Dockerfile
FROM openjdk:17-jdk-slim
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]FROM openjdk:17-jdk-slim
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jarapp.jar
ENTRYPOINT
构建 Docker 镜像: 在项目根目录下,使用以下命令构建镜像:
docker build -t your-app-name .
-t your-app-name
.
运行 Docker 容器(本地测试): 在本地运行镜像,确保一切正常:
docker run -p 8080:8080 your-app-name
-p 8080:8080
推送到 Docker Hub (可选): 如果你想在 ECS 上使用该镜像,需要将其推送到 Docker Hub 或其他镜像仓库。
docker tag your-app-name your-dockerhub-username/your-app-name docker push your-dockerhub-username/your-app-name
配置 ECS 实例:
创建 ECS 实例: 在云服务控制台中创建一个 ECS 实例。选择合适的操作系统(推荐 Linux)和实例规格。
配置安全组: 确保安全组允许从外部访问 8080 端口。
安装 Docker: 通过 SSH 连接到 ECS 实例,并安装 Docker。不同操作系统的安装方式略有不同,参考官方文档。
拉取镜像: 从 Docker Hub 拉取你的镜像:
docker pull your-dockerhub-username/your-app-name
运行容器: 运行容器,将 ECS 实例的 8080 端口映射到容器的 8080 端口:
docker run -d -p 8080:8080 your-dockerhub-username/your-app-name
-d
访问应用: 通过 ECS 实例的公网 IP 地址和 8080 端口访问你的 Spring Boot 应用。
Dockerfile 中的 ARG 和 ENV 的区别是什么?
ARG
ENV
ARG
docker build
ENV
ENV
ARG
如何优化 Docker 镜像的大小?
镜像大小直接影响部署速度和资源消耗。优化 Docker 镜像大小,可以从以下几个方面入手:
openjdk:17-jdk-slim
openjdk:17-jdk
.dockerignore
.dockerignore
如何监控 Docker 容器的健康状况?
监控 Docker 容器的健康状况对于保证应用的稳定运行至关重要。可以采用以下几种方法:
HEALTHCHECK
HEALTHCHECK
docker stats
使用 Docker Compose 编排 Spring Boot 应用和数据库
如果你的 Spring Boot 应用需要依赖数据库或其他服务,可以使用 Docker Compose 来编排多个容器。创建一个
docker-compose.yml
version: "3.8"
services:
  db:
    image: postgres:14
    environment:
      POSTGRES_USER: your_user
      POSTGRES_PASSWORD: your_password
      POSTGRES_DB: your_db
    ports:
      - "5432:5432"
  app:
    image: your-dockerhub-username/your-app-name
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/your_db
      SPRING_DATASOURCE_USERNAME: your_user
      SPRING_DATASOURCE_PASSWORD: your_password在这个例子中,
db
app
depends_on
app
db
docker-compose up
以上就是使用 Docker 部署 Spring Boot 应用(含 ECS 配置)的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号