App下載

在SpringBoot中怎么將Docker部署?將Docker部署的方法分享!

別動(dòng)我的月亮 2021-09-03 10:47:51 瀏覽數(shù) (2374)
反饋

Spring Boot Docker 部署,為在 Docker 容器上部署我們的 Spring Boot 微服務(wù)打開了大門。讓我們來看看這個(gè)過程! 

什么是 Docker?

Docker 是一個(gè)平臺(tái),使開發(fā)人員能夠以容器化應(yīng)用程序的形式開發(fā)、發(fā)布和執(zhí)行應(yīng)用程序。

它通過為您的應(yīng)用程序創(chuàng)建一個(gè)輕量級(jí)的可執(zhí)行包來實(shí)現(xiàn)這一點(diǎn)。此包包括應(yīng)用程序代碼以及應(yīng)用程序運(yùn)行所需的所有依賴項(xiàng)。依賴關(guān)系可以是環(huán)境變量、庫、工具等。

這樣的可執(zhí)行包通常也稱為映像。一個(gè)正在運(yùn)行的鏡像是一個(gè)容器。

Docker 本身就是一個(gè)龐大的話題。如果您想了解更多信息,我有一篇關(guān)于 Docker 基礎(chǔ)知識(shí)的詳細(xì)文章。

使用 Dockerfile 定義 Docker 鏡像

要為我們的 Spring Boot Docker 部署創(chuàng)建 Docker 映像,我們需要在項(xiàng)目的根目錄中創(chuàng)建一個(gè)Dockerfile。

以下是典型 Spring Boot 應(yīng)用程序的 Dockerfile 內(nèi)容。

# Start with base image
FROM openjdk:8-jdk-alpine
# Add Maintainer Info
LABEL maintainer="Progressive Coder"
# Add a temporary volume
VOLUME /tmp
# Expose Port 8080
EXPOSE 8080
# Application Jar File
ARG JAR_FILE=target/spring-boot-starter-0.0.1-SNAPSHOT.jar
# Add Application Jar File to the Container
ADD ${JAR_FILE} spring-boot-starter.jar
# Run the JAR file
ENTRYPOINT ["java", "-jar", "/spring-boot-starter.jar"]

讓我們來看看 Dockerfile 中的每一步。

FROM: 此語句用于表示我們的新 Docker 映像將使用的基本映像。在上面的示例中,我們使用了OpenJDK 8映像。這是運(yùn)行 Java 應(yīng)用程序的一個(gè)非常輕量級(jí)的選項(xiàng)。

LABEL:此指令用于向圖像添加某種類型的元數(shù)據(jù)。在這種情況下,我們添加了名為MAINTAINER的元數(shù)據(jù)。

VOLUME:Volume 指令在容器中創(chuàng)建一個(gè)掛載點(diǎn)。您還可以將掛載點(diǎn)映射到主機(jī)操作系統(tǒng)上的目錄。卷的典型用例是存儲(chǔ)由我們的應(yīng)用程序生成的日志文件。

EXPOSE:這是一條重要的指令。它允許我們向外界公開特定的端口。在我們的示例中,我們公開端口 8080。

ARG:該指令用于定義一個(gè)具有默認(rèn)值的變量。在我們的例子中,我們將它設(shè)置為 JAR 文件的位置。

添加:在本指令中,我們基本上是將文件和目錄復(fù)制到我們的 docker 鏡像。

ENTRYPOINT:最后但并非最不重要的是,ENTRYPOINT 是您配置應(yīng)如何執(zhí)行應(yīng)用程序的地方。在我們的例子中,我們指定了如何運(yùn)行 JAR 文件。

創(chuàng)建 Docker 鏡像

現(xiàn)在是創(chuàng)建 Docker 鏡像的時(shí)候了。為此,我們需要在 Spring Boot 項(xiàng)目區(qū)域中準(zhǔn)備好 JAR 文件。

要?jiǎng)?chuàng)建 JAR 文件,請(qǐng)執(zhí)行以下命令。

mvn clean package

現(xiàn)在要構(gòu)建 Dockerfile,需要運(yùn)行以下命令:

docker build -t spring-boot-starter .

執(zhí)行此命令后,您將能夠看到正在構(gòu)建的映像。如果您執(zhí)行以下命令,您可以看到圖像列表:

docker image ls

運(yùn)行 Docker 鏡像

現(xiàn)在鏡像已成功構(gòu)建,您可以使用Docker Run命令運(yùn)行 Docker 鏡像。

docker run spring-boot-starter

基本上,我們要求 Docker 運(yùn)行標(biāo)記為spring-boot-starter的鏡像。換句話說,這就是我們?cè)谶@篇文章中一直針對(duì)的 Spring Boot Docker 部署。

這將創(chuàng)建一個(gè)容器,應(yīng)用程序?qū)㈤_始運(yùn)行。要查看當(dāng)前運(yùn)行的容器列表,您可以使用以下命令:

docker ps

可以通過http://localhost:8080訪問該應(yīng)用程序

您還可以通過發(fā)出以下命令來運(yùn)行容器來更改容器的端口。

docker run -p 5000:8080 spring-boot-starter

基本上,這里的 5000 是主機(jī)操作系統(tǒng)上的端口。我們將容器上的端口 8080 映射到主機(jī)操作系統(tǒng)上的端口 5000。

如果你想停止正在運(yùn)行的容器,你可以按CTRL + C。

結(jié)論

這樣,我們就成功地為我們的微服務(wù)創(chuàng)建了一個(gè)Spring Boot Docker 部署。

我們首先創(chuàng)建了一個(gè) Docker 鏡像,然后在主機(jī)操作系統(tǒng)上運(yùn)行它。Docker Image 也可以通過 Docker Hub 公開共享。通常,企業(yè)也有內(nèi)部 Docker 注冊(cè)表,其中存儲(chǔ)圖像以備將來使用。我們將在以后的文章中探討這些概念。對(duì)于源碼我們可以在Github上找到


0 人點(diǎn)贊