为了账号安全,请及时绑定邮箱和手机立即绑定

Springboot应用的Docker容器化部署项目实战

概述

本文详细介绍了如何进行Spring Boot应用的Docker容器化部署项目实战,包括Spring Boot应用的创建和打包,以及Docker的基本使用和容器化部署的步骤。通过一系列的配置和命令,读者可以轻松地将Spring Boot应用打包为JAR文件,并使用Docker构建和运行容器。此外,文章还介绍了如何利用Docker Compose进行多容器部署,以满足复杂的生产环境需求。

Spring Boot应用简介
Spring Boot是什么

Spring Boot是由Pivotal团队提供的开源框架,旨在简化新Spring应用的初始搭建和配置过程。Spring Boot通过一系列约定优于配置的方式,使得开发人员能够快速上手创建独立的、生产级别的应用。

Spring Boot的核心功能包括自动配置、内嵌的Web服务器、自动依赖管理和对第三方库的支持。

为什么使用Spring Boot

使用Spring Boot有几个优点:

  1. 快速启动:Spring Boot可以帮助开发者快速启动一个Spring应用,不需要大量的配置。
  2. 约定优于配置:通过约定的方式,减少配置,提高了开发效率。
  3. 内嵌Web服务器:支持内嵌Tomcat、Jetty或Undertow,简化部署过程。
  4. 自动依赖管理:自动管理依赖版本,减少版本冲突问题。
  5. 嵌入式监控:提供Actuator来监控应用的状态。
  6. 支持热部署:支持Spring DevTools,可以实现热部署功能。
创建一个简单的Spring Boot应用

创建一个简单的Spring Boot应用需要以下步骤:

  1. 创建一个新的Spring Boot项目。
  2. 配置应用的主类。
  3. 创建一个简单的控制器来响应HTTP请求。
  4. 运行应用并测试。

创建一个新的Spring Boot项目

可以通过Spring Initializr或IDE工具来创建一个新的Spring Boot项目。下面提供一个使用命令行来创建Spring Boot项目的示例。

$ mkdir springboot-docker-demo
$ cd springboot-docker-demo
$ mvn archetype:generate -DgroupId=com.example -DartifactId=springboot-docker-demo \
-Dversion=1.0.0 -Dpackage=com.example.demo -DarchetypeArtifactId=spring-boot-archetype-web

在IDE中创建一个新的Spring Boot项目

使用Spring Tool Suite(STS)或IntelliJ IDEA创建一个新的Spring Boot项目,步骤如下:

  1. 打开IDE并选择创建新的Spring Boot项目。
  2. 选择项目位置并填写项目基本信息(如项目名、包名等)。
  3. 添加依赖项,如Spring Web依赖。
  4. 点击完成,IDE将自动配置项目并创建基本结构。

配置应用的主类

Spring Boot应用通常有一个启动类,该类标记为@SpringBootApplication。下面是一个简单的启动类示例:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

创建一个简单的控制器

创建一个简单的控制器来响应HTTP请求:

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker!";
    }

}

运行并测试应用

在IDE中运行DemoApplication类,或者使用命令行运行:

$ mvn spring-boot:run

访问http://localhost:8080/hello,应该能看到返回的字符串:"Hello, Docker!"。

Docker基础
什么是Docker

Docker是一个开源的应用容器引擎,让开发者可以打包一个应用及其依赖关系到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker使用Go语言编写,由UFO Technologies公司发起并维护。Docker的主要目标是实现应用在不同环境下的可移植性。

Docker的基本概念

镜像(Image)

镜像是创建Docker容器的模板。一个镜像可以包含一个完整的操作系统环境、文件系统、预安装的应用程序和库。用户可以从Docker Hub和其他公共仓库下载镜像,也可以从本地文件或Dockerfile构建镜像。

容器(Container)

容器是镜像的实例。Docker容器是基于镜像创建的运行时实例。每个容器都运行在自己的进程中,彼此隔离,由Docker的守护进程启动和生命周期管理。容器提供了进程级的隔离,可以看作是一个进程加一组资源的集合。

仓库(Repository)

仓库是一个存储镜像文件的服务器。Docker Hub是官方的公共仓库,任何人都可以上传和下载镜像。除了Docker Hub,还可以使用私有仓库,比如AWS Elastic Container Registry、Google Container Registry等。

安装Docker

Docker支持多种操作系统,包括Linux、macOS和Windows。这里以Linux为例安装Docker。

在Ubuntu上安装Docker

$ sudo apt-get update
$ sudo apt-get install docker.io

安装完成后,可以通过命令验证Docker是否安装成功:

$ docker --version
Docker version 20.10.7, build f074954

在macOS上安装Docker

使用Homebrew安装Docker:

$ brew install --cask docker

启动Docker应用并验证安装成功:

$ docker --version
Docker version 20.10.7, build f074954

在Windows上安装Docker

访问Docker官网下载Windows版本的安装包,然后按照安装向导进行安装:

  1. 下载并运行Docker安装包。
  2. 安装完成后,启动Docker应用。
  3. 验证安装成功:
$ docker --version
Docker version 20.10.7, build f074954

拉取镜像

可以从Docker Hub拉取镜像,例如拉取官方的Ubuntu镜像:

$ docker pull ubuntu

运行容器

拉取镜像后,可以使用docker run命令运行容器:

$ docker run -it ubuntu /bin/bash

这将会启动一个基于Ubuntu的容器,并进入交互式的bash环境。

将Spring Boot应用打包为可执行的JAR文件
使用IDE或命令行创建Spring Boot项目

创建一个Spring Boot项目可以使用IDE或者命令行工具。这里以命令行工具为例。

使用命令行创建Spring Boot项目

使用Maven命令行工具创建Spring Boot项目:

$ mvn archetype:generate -DgroupId=com.example -DartifactId=springboot-docker-demo \
-Dversion=1.0.0 -Dpackage=com.example.demo -DarchetypeArtifactId=spring-boot-archetype-web

项目结构如下:

springboot-docker-demo/
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               └── HelloController.java
    │   └── resources
    │       └── application.properties
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java

打包Spring Boot应用为JAR文件

使用Maven将Spring Boot应用打包为可执行的JAR文件。可以在pom.xml中配置插件,或者直接使用命令行工具:

$ mvn clean package

生成的JAR文件位于target/目录下,例如springboot-dutocher-demo-1.0.0.jar

使用Docker构建Spring Boot应用的镜像
编写Dockerfile

Dockerfile是一个文本文件,包含了一系列的指令,用来描述如何构建Docker镜像。下面是一个简单的Dockerfile示例,用于构建Spring Boot应用:

# 使用官方的Java运行时作为基础镜像
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 将构建好的JAR文件复制到容器中
COPY target/springboot-docker-demo-1.0.0.jar /app/app.jar

# 暴露应用的端口
EXPOSE 8080

# 定义启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

构建并测试Docker镜像

使用docker build命令构建镜像,指定-t参数为镜像指定一个标签名称:

$ docker build -t springboot-docker-demo:1.0.0 .

构建完成后,可以使用docker images命令查看构建的镜像:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
springboot-docker-demo  1.0.0              bd245a0f1e2c        About a minute ago   563MB

运行并测试Docker镜像

使用docker run命令运行容器,指定要映射的端口:

$ docker run -p 8080:8080 springboot-docker-demo:1.0.0

此时,访问http://localhost:8080/hello,应该能看到返回的字符串:"Hello, Docker!"。

运行Docker容器
使用Docker命令运行容器

除了上面的docker run命令,还可以使用其他命令来运行和管理容器。

运行容器并设置环境变量

可以设置容器的环境变量,例如设置应用的端口:

$ docker run -e SPRING_PROFILES_ACTIVE=prod -p 8080:8080 springboot-docker-demo:1.0.0

调试和日志查看

可以通过docker logs命令查看容器的日志:

$ docker logs <container-id>

也可以通过docker exec命令进入容器的shell,进行调试:

$ docker exec -it <container-id> /bin/bash
部署Spring Boot应用到生产环境
配置Docker环境变量和端口映射

在生产环境中部署Docker容器时,通常需要配置环境变量和端口映射,以满足实际应用的需求。

使用环境变量

可以使用-e选项来传递环境变量,例如:

$ docker run -e SPRING_PROFILES_ACTIVE=prod -p 8080:8080 -d springboot-docker-demo:1.0.0

使用端口映射

将容器内的端口映射到主机的端口,例如:

$ docker run -p 8080:8080 -d springboot-docker-demo:1.0.0
使用Docker Compose进行多容器部署

当需要部署多个容器时,可以使用Docker Compose。Docker Compose是一个定义和运行多容器Docker应用的工具,通过一个docker-compose.yml文件来配置应用的服务。

编写docker-compose.yml文件

下面是一个简单的docker-compose.yml文件,配置了一个应用服务:

version: '3'
services:
  app:
    image: springboot-docker-demo:1.0.0
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=prod
    networks:
      - app-network
networks:
  app-network:

使用Docker Compose启动应用

使用docker-compose up命令启动应用:

$ docker-compose up

Docker Compose会根据配置文件创建并启动所有服务。

使用Docker Compose进行停止和删除

使用docker-compose down命令停止并删除容器:

$ docker-compose down

这将会删除所有创建的容器和服务。

通过以上步骤,可以将一个简单的Spring Boot应用容器化并部署到生产环境中,利用Docker和Docker Compose的强大功能来简化应用的部署和管理过程。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消