亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Springboot應用的Docker容器化部署學習

概述

本文详细介绍了Springboot应用的Docker容器化部署学习,包括Spring Boot应用的基础搭建、Docker的基本使用和配置,以及如何将Spring Boot应用打包成JAR文件并通过Dockerfile构建镜像,最后展示了如何在本地和远程服务器上运行Docker容器。

Spring Boot应用简介

1.1 Spring Boot概述

Spring Boot 是由 Pivotal 团队提供的一个用于简化 Spring 应用初始搭建以及配置过程的框架。它通过一系列约定优于配置的方式,使得开发者可以快速搭建起一个独立运行的 Spring 应用。Spring Boot 的主要特点包括:

  • 自动配置:Spring Boot 可以自动配置很多常见的场景,例如数据库连接、WebSocket 服务等。
  • 起步依赖:通过在 pom.xmlbuild.gradle 文件中添加相应的 spring-boot-starter 依赖,可以快速加入所需的依赖库。
  • 命令行界面:Spring Boot 应用可以通过 spring-boot-maven-pluginspring-boot-gradle-plugin 插件提供的命令行界面启动。
  • 内置 web 服务器:Spring Boot 可以内置 Tomcat、Jetty 或者 Undertow 作为应用服务器。

Spring Boot 可以帮助开发者摆脱繁琐的配置过程,从而专注于业务逻辑的实现。

1.2 创建第一个Spring Boot应用

要创建一个简单的 Spring Boot 应用,首先需要设置项目环境。这里使用 Maven 来管理项目依赖。

1.2.1 使用Maven创建Spring Boot应用

pom.xml 文件中添加 Spring Boot 的父依赖和 Spring Web 依赖:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

接下来,创建一个简单的 Controller 类:

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
    public class HelloController {
        @GetMapping("/")
        public String hello() {
            return "Hello, Docker!";
        }
    }
}

1.2.2 使用Gradle创建Spring Boot应用

使用 Gradle 创建 Spring Boot 应用,可以在 build.gradle 文件中添加以下依赖:

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

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

创建一个简单的 Controller 类,代码与 Maven 版本相同:

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
    public class HelloController {
        @GetMapping("/")
        public String hello() {
            return "Hello, Docker!";
        }
    }
}

Docker基础入门

2.1 Docker简介

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

Docker 使用客户端-服务器 (Client-Server) 架构模式,主要概念包括:

  • 镜像 (Image):Docker 镜像是一个只读的模板,包含了应用的运行环境和依赖库。
  • 容器 (Container):Docker 容器是在镜像上运行的一个或一组进程。容器从镜像创建,但镜像本身不包含任何动态数据。
  • 仓库 (Repository):仓库是存放镜像文件的场所,可以理解为代码控制中的代码仓库。Docker Hub 是官方提供的仓库。

2.2 安装Docker

Docker 支持在多种操作系统上安装,包括 Linux、Windows 和 macOS。这里以 Linux 发行版为例,介绍安装步骤:

  1. 安装 Docker

    • 对于 Ubuntu,可以使用以下命令安装 Docker:

      sudo apt-get update
      sudo apt-get install docker.io
    • 对于 CentOS,可以使用以下命令安装 Docker:

      sudo yum install docker
      sudo service docker start
  2. 安装完成后,可以验证 Docker 是否安装成功

    docker --version

2.3 Docker基本命令

Docker 提供了一系列基本命令用于镜像和容器的操作:

  • 镜像操作

    • docker images:列出所有镜像
    • docker pull <image-name>:从 Docker Hub 拉取镜像
    • docker build -t <tag-name> .:根据 Dockerfile 构建镜像
    • docker push <image-name>:将镜像推送到 Docker Hub
  • 容器操作
    • docker ps:列出正在运行的容器
    • docker ps -a:列出所有容器
    • docker run -it <image-name>:创建并运行容器
    • docker stop <container-id>:停止容器
    • docker rm <container-id>:删除容器

以下是一些具体的命令示例:

# 创建一个简单的 Ubuntu 容器
docker run -it ubuntu /bin/bash

# 列出正在运行的容器
docker ps

# 列出所有容器
docker ps -a

Spring Boot应用打包为可执行的JAR包

3.1 使用Maven打包Spring Boot应用

  1. pom.xml 文件中添加 spring-boot-maven-plugin 插件

    <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
    </build>
  2. 打包应用

    • 使用以下命令打包应用:

      mvn clean package
    • 打包完成后,可以在 target 目录下找到生成的 JAR 文件。

3.2 使用Gradle打包Spring Boot应用

  1. build.gradle 文件中添加 springBoot 插件

    plugins {
       id 'org.springframework.boot' version '2.5.4'
       id 'io.spring.dependency-management' version '1.0.11.RELEASE'
       id 'java'
       id 'org.springframework.boot' version '2.5.4'
    }
  2. 打包应用

    • 使用以下命令打包应用:

      ./gradlew bootJar
    • 打包完成后,可以在 build/libs 目录下找到生成的 JAR 文件。

Dockerfile编写

4.1 Dockerfile基本语法

Dockerfile 是一个文本文件,包含了一组指令,这些指令描述了如何构建一个 Docker 镜像。Dockerfile 的基本语法包括以下几个指令:

  • FROM:指定基础镜像。例如:

    FROM openjdk:8-jdk-alpine
  • RUN:执行一条命令。例如:

    RUN apk add --no-cache ca-certificates
  • COPY:从构建上下文文件系统复制文件到镜像。例如:

    COPY target/demo-0.0.1-SNAPSHOT.jar /app.jar
  • CMD:定义容器启动时默认执行的命令。例如:

    CMD ["java", "-jar", "/app.jar"]
  • EXPOSE:暴露容器运行时监听的端口。例如:

    EXPOSE 8080

4.2 编写Dockerfile以支持Spring Boot应用

  1. 创建 Dockerfile

    • 在项目根目录下创建一个 Dockerfile 文件,并添加以下内容:

      # 使用 openjdk 8 作为基础镜像
      FROM openjdk:8-jdk-alpine
      # 设置工作目录
      WORKDIR /app
      # 暴露应用端口
      EXPOSE 8080
      # 复制 JAR 文件到容器
      COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
      # 设置容器启动命令
      CMD ["java", "-jar", "app.jar"]
    1. 构建镜像

      • 使用以下命令构建 Docker 镜像:
      docker build -t springboot-demo .

构建并运行Docker容器

5.1 构建Docker镜像

  1. 使用 Dockerfile 构建镜像

    • 在项目的根目录下运行以下命令:

      docker build -t springboot-demo .
    • 构建完成后,可以使用 docker images 查看新构建的镜像:

      docker images

5.2 运行Docker容器

  1. 运行容器

    • 使用以下命令运行容器:

      docker run -d -p 8080:8080 --name springboot-demo springboot-demo
    • -d 参数表示以守护进程方式运行容器。
    • -p 参数将容器内的 8080 端口映射到主机的 8080 端口。
    • --name 参数为容器指定一个名称。
  2. 验证容器运行状态

    • 使用以下命令查看正在运行的容器:

      docker ps
    • 访问 http://localhost:8080 查看应用是否正常运行。

部署到服务器

6.1 将Docker镜像推送至Docker Hub

  1. 登录 Docker Hub

    • 使用以下命令登录 Docker Hub:

      docker login
  2. 推送镜像

    • 使用以下命令推送镜像到 Docker Hub:

      docker push springboot-demo:latest

6.2 在服务器上拉取并运行Docker容器

  1. 拉取镜像

    • 在服务器上运行以下命令拉取镜像:

      docker pull springboot-demo:latest
  2. 运行容器

    • 在服务器上运行以下命令运行容器:

      docker run -d -p 8080:8080 --name springboot-demo springboot-demo
  3. 验证容器运行状态

    • 使用以下命令查看容器的日志:

      docker logs springboot-demo
    • 访问 http://<服务器IP>:8080 查看应用是否正常运行。
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
軟件工程師
手記
粉絲
47
獲贊與收藏
152

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消