溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot(2.3)應用制作Docker鏡像的過程

發布時間:2021-10-12 14:01:05 來源:億速云 閱讀:159 作者:柒染 欄目:云計算

SpringBoot(2.3)應用制作Docker鏡像的過程

1. 引言

在現代軟件開發中,容器化技術已經成為一種不可或缺的工具。Docker作為最流行的容器化平臺之一,能夠幫助開發者將應用程序及其依賴項打包到一個輕量級、可移植的容器中。Spring Boot流行的Java框架,提供了快速構建獨立、生產級別的Spring應用程序的能力。本文將詳細介紹如何將一個Spring Boot 2.3應用制作成Docker鏡像,并部署到Docker容器中。

2. 準備工作

在開始之前,確保你已經具備以下條件:

  • Java開發環境:JDK 8或更高版本。
  • Maven或Gradle:用于構建Spring Boot應用。
  • Docker:確保Docker已安裝并運行在你的開發機器上。
  • Spring Boot應用:一個可運行的Spring Boot 2.3應用。

3. 創建Spring Boot應用

如果你還沒有一個Spring Boot應用,可以通過以下步驟快速創建一個簡單的Spring Boot應用。

3.1 使用Spring Initializr創建項目

  1. 打開Spring Initializr。
  2. 選擇項目類型為Maven或Gradle。
  3. 選擇Spring Boot版本為2.3.x。
  4. 添加依賴項,例如Spring Web。
  5. 點擊“Generate”按鈕下載項目。

3.2 編寫簡單的REST控制器

src/main/java/com/example/demo目錄下創建一個DemoApplication.java文件,并添加以下代碼:

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
@RestController
public class DemoApplication {

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

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

3.3 運行應用

在項目根目錄下運行以下命令來啟動應用:

mvn spring-boot:run

或者使用Gradle:

gradle bootRun

訪問http://localhost:8080/hello,你應該會看到“Hello, Docker!”的響應。

4. 構建Spring Boot應用

在將應用打包成Docker鏡像之前,首先需要將Spring Boot應用構建成一個可執行的JAR文件。

4.1 使用Maven構建

在項目根目錄下運行以下命令:

mvn clean package

構建完成后,你會在target目錄下找到一個名為demo-0.0.1-SNAPSHOT.jar的文件。

4.2 使用Gradle構建

在項目根目錄下運行以下命令:

gradle build

構建完成后,你會在build/libs目錄下找到一個名為demo-0.0.1-SNAPSHOT.jar的文件。

5. 創建Dockerfile

Dockerfile是一個文本文件,包含了一系列指令,用于定義如何構建Docker鏡像。接下來,我們將為Spring Boot應用創建一個Dockerfile。

5.1 創建Dockerfile

在項目根目錄下創建一個名為Dockerfile的文件,并添加以下內容:

# 使用官方的OpenJDK 8作為基礎鏡像
FROM openjdk:8-jdk-alpine

# 設置工作目錄
WORKDIR /app

# 將構建的JAR文件復制到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 暴露端口
EXPOSE 8080

# 運行應用
ENTRYPOINT ["java", "-jar", "app.jar"]

5.2 解釋Dockerfile

  • FROM openjdk:8-jdk-alpine:指定基礎鏡像為OpenJDK 8的Alpine版本,這是一個輕量級的Linux發行版。
  • WORKDIR /app:設置工作目錄為/app,后續的命令將在這個目錄下執行。
  • COPY target/demo-0.0.1-SNAPSHOT.jar app.jar:將構建的JAR文件復制到容器中,并重命名為app.jar。
  • EXPOSE 8080:暴露容器的8080端口,Spring Boot應用默認監聽這個端口。
  • ENTRYPOINT [“java”, “-jar”, “app.jar”]:指定容器啟動時執行的命令,即運行Spring Boot應用。

6. 構建Docker鏡像

在創建了Dockerfile之后,接下來我們需要使用Docker命令來構建鏡像。

6.1 構建鏡像

在項目根目錄下運行以下命令:

docker build -t demo-app .
  • -t demo-app:指定鏡像的名稱為demo-app。
  • .:指定Dockerfile所在的目錄為當前目錄。

6.2 查看鏡像

構建完成后,你可以使用以下命令查看本地鏡像列表:

docker images

你應該會看到類似以下的輸出:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo-app            latest              1234567890ab        1 minute ago        123MB

7. 運行Docker容器

在構建了Docker鏡像之后,接下來我們可以運行一個容器來啟動Spring Boot應用。

7.1 運行容器

使用以下命令運行容器:

docker run -p 8080:8080 demo-app
  • -p 8080:8080:將主機的8080端口映射到容器的8080端口。
  • demo-app:指定要運行的鏡像名稱。

7.2 訪問應用

在瀏覽器中訪問http://localhost:8080/hello,你應該會看到“Hello, Docker!”的響應。

8. 優化Docker鏡像

雖然我們已經成功構建并運行了Docker鏡像,但我們可以進一步優化鏡像的大小和性能。

8.1 使用多階段構建

多階段構建是一種優化Docker鏡像大小的技術。它允許我們在一個Dockerfile中使用多個FROM指令,每個階段可以使用不同的基礎鏡像,并且只有最后一個階段的內容會被包含在最終的鏡像中。

修改Dockerfile如下:

# 第一階段:構建應用
FROM maven:3.6.3-jdk-8 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# 第二階段:運行應用
FROM openjdk:8-jdk-alpine
WORKDIR /app
COPY --from=build /app/target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

8.2 解釋多階段構建

  • 第一階段:使用Maven鏡像來構建Spring Boot應用,生成JAR文件。
  • 第二階段:使用OpenJDK鏡像來運行應用,只復制第一階段生成的JAR文件。

8.3 重新構建鏡像

運行以下命令重新構建鏡像:

docker build -t demo-app .

8.4 查看鏡像大小

使用以下命令查看鏡像大?。?/p>

docker images

你應該會看到鏡像大小有所減小。

9. 使用Docker Compose管理容器

在實際開發中,我們通常需要管理多個容器。Docker Compose是一個工具,允許我們使用YAML文件來定義和運行多個容器的應用。

9.1 創建docker-compose.yml文件

在項目根目錄下創建一個名為docker-compose.yml的文件,并添加以下內容:

version: '3'
services:
  app:
    image: demo-app
    build: .
    ports:
      - "8080:8080"

9.2 啟動應用

在項目根目錄下運行以下命令:

docker-compose up

9.3 停止應用

使用以下命令停止應用:

docker-compose down

10. 總結

通過本文,我們詳細介紹了如何將一個Spring Boot 2.3應用制作成Docker鏡像,并部署到Docker容器中。我們還探討了如何優化Docker鏡像的大小和性能,以及如何使用Docker Compose來管理多個容器。希望這些內容能夠幫助你在實際項目中更好地使用Docker和Spring Boot。

11. 參考資料


作者: [Your Name]
日期: [Date]
版本: 1.0

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女