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

Springboot应用的Docker容器化部署学习

概述

本文主要介绍了Springboot应用的Docker容器化部署学习,包括Spring Boot应用的创建、Docker的基本概念和安装、将Spring Boot应用打包为JAR文件、创建Docker镜像以及运行Docker容器。通过这些步骤,可以轻松实现Spring Boot应用的容器化部署。

Spring Boot应用简介

什么是Spring Boot

Spring Boot是由Pivotal团队提供的基于Spring Framework的框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过约定优于配置的方式,让开发者只需很少的配置即可快速搭建一个独立运行的Spring应用。Spring Boot的核心功能包括自动配置、启动器(Starters)、内置的web服务器等。

Spring Boot的特点和优势

Spring Boot具有以下特点和优势:

  • 简化配置:Spring Boot提供了默认配置,使得开发人员可以不用写大量的XML或配置代码。
  • 快速启动:只需要一行命令即可启动一个应用。
  • 自动配置:根据依赖包自动配置Spring。
  • 内嵌的web服务器:可以内嵌Tomcat或Jetty等Web服务器。
  • 健康检查和监控:内置的健康检查和监控功能。
  • 无代码生成:不需要生成XML配置文件。
  • 支持多种主流数据库:如MySQL、PostgreSQL等。
  • 支持多种消息队列:如RabbitMQ、Kafka等。

创建一个简单的Spring Boot应用

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

  1. 创建一个新的Spring Boot项目:可以使用Spring Initializr来创建一个新的Spring Boot项目。
  2. 编写Spring Boot应用代码:使用IDE(如IntelliJ IDEA或Eclipse)来编写应用代码。
  3. 运行应用:使用IDE或命令行工具启动应用。

下面以Spring Initializr为例创建一个简单的Spring Boot项目。首先访问Spring Initializr网站(https://start.spring.io/),选择项目的基本配置,如:

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 2.5.0
  • Packaging: Jar
  • Java: 11
  • Dependencies: Web

然后点击Generate按钮下载项目,解压后导入IDE中,编写一个简单的Spring Boot应用,如下所示:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

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

@RestController
class HelloController {
    @GetMapping("/")
    public String hello() {
        return "Hello World!";
    }
}

该应用启动后,访问http://localhost:8080/将看到返回的Hello World!

Docker简介

什么是Docker

Docker是一个开源的应用容器引擎,让开发者可以打包应用及其依赖关系到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker比虚拟机更轻量化,更容易部署和管理,降低了部署应用的复杂性。

Docker的基本概念

  • 镜像(Image):镜像是运行容器的基础,它是只读的模板,包含了运行容器所需的应用代码、运行时、库、环境变量和配置文件等。
  • 容器(Container):容器是镜像的运行实例,可被创建、启动、停止、删除,一个容器拥有自己的文件系统、进程空间、用户空间和网络空间。
  • 仓库(Repository):仓库是存储镜像的场所,通常位于Docker Hub、Google Container Registry等。

安装和配置Docker

安装Docker

下载安装包根据您的操作系统安装Docker。例如在Ubuntu中可以通过以下命令安装:

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

启动Docker服务

启动Docker服务,并设置开机自启:

sudo systemctl start docker
sudo systemctl enable docker

验证安装

运行以下命令,检查Docker版本,验证安装是否成功:

docker --version
将Spring Boot应用打包为JAR

使用Maven或Gradle构建项目

Maven和Gradle是常用的构建工具,用于管理项目的依赖、编译、测试和打包等。

Maven示例

使用Maven构建项目时,需要在pom.xml文件中定义项目的基本配置,例如:

<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
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Demo</name>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.5.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Gradle示例

使用Gradle构建项目时,需要在build.gradle文件中定义项目的基本配置,例如:

plugins {
    id 'org.springframework.boot' version '2.5.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

打包为可执行的JAR文件

使用Maven打包项目:

mvn clean package

使用Gradle打包项目:

./gradlew bootJar

这将生成一个名为demo-0.0.1-SNAPSHOT.jar的可执行JAR文件。

创建Docker镜像

编写Dockerfile

Dockerfile是一个文本文件,包含了构建镜像时所需的所有命令。下面是一个简单的Dockerfile示例:

# 基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制JAR文件到镜像中
COPY target/demo-0.0.1-SNAPSHOT.jar /app/demo.jar

# 暴露端口
EXPOSE 8080

# 启动命令
ENTRYPOINT ["java","-jar","/app/demo.jar"]

构建Docker镜像

使用Docker命令从Dockerfile构建镜像,例如:

docker build -t springboot-demo:latest .

这将构建一个镜像,命名为springboot-demo,标签为latest

查看构建的镜像

查看构建的镜像,可以使用以下命令:

docker images
运行Docker容器

启动Docker容器

使用docker run命令启动容器,例如:

docker run -p 8080:8080 -d springboot-demo:latest

这将启动一个容器,并将容器的8080端口映射到主机的8080端口。

查看和管理容器

查看正在运行的容器:

docker ps

停止容器:

docker stop <container_id>

查看容器的日志:

docker logs <container_id>

查看容器日志示例

假设容器ID为abc123,查看容器日志:

docker logs abc123

返回的输出可能如下:

2023-03-13 08:15:16.123 INFO  main org.springframework.boot.web.embedded.tomcat.TomcatWebServer: Tomcat started on port(s): 8080 (http)
2023-03-13 08:15:16.123 INFO  main com.example.demo.DemoApplication: Started DemoApplication in 5.495 seconds (JVM running for 6.038)
部署Spring Boot应用到Docker容器

将应用部署到容器中

将上一节构建好的Docker镜像部署到容器中,并映射端口:

docker run -p 8080:8080 -d springboot-demo:latest

确保可以通过http://localhost:8080/访问应用。

配置环境变量和端口映射

在启动容器时可以配置环境变量,例如:

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

这将设置环境变量SPRING_PROFILES_ACTIVEprod

总结

通过本教程,您已经掌握了如何将Spring Boot应用容器化部署到Docker中。这包括了创建一个简单的Spring Boot应用、安装和配置Docker、打包项目为JAR文件、编写Dockerfile、构建Docker镜像、启动Docker容器、查看和管理容器,以及配置环境变量和端口映射。

容器化部署可以让开发人员专注于编写代码,而无需处理环境配置和部署的复杂性,大大提高开发效率和部署速度。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消