最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

本地使用Docker部署Java服務(wù)的詳細(xì)步驟

 更新時(shí)間:2025年10月20日 08:45:23   作者:自由的瘋  
在本地使用 Docker 部署 Java 服務(wù)是一個(gè)常見(jiàn)的做法,可以幫助開(kāi)發(fā)者在本地環(huán)境中快速搭建、測(cè)試和調(diào)試 Java 應(yīng)用程序,以下是詳細(xì)的步驟指南,幫助你在本地計(jì)算機(jī)上使用 Docker 部署 Java 服務(wù),需要的朋友可以參考下

引言

在本地使用 Docker 部署 Java 服務(wù)是一個(gè)常見(jiàn)的做法,可以幫助開(kāi)發(fā)者在本地環(huán)境中快速搭建、測(cè)試和調(diào)試 Java 應(yīng)用程序。以下是詳細(xì)的步驟指南,幫助你在本地計(jì)算機(jī)上使用 Docker 部署 Java 服務(wù)。

1. 安裝 Docker

1.1 Windows

  1. 檢查系統(tǒng)要求:確保你的 Windows 版本是 Windows 10 Pro、Enterprise 或 Education(Build 14393 或更高版本)。家庭版用戶(hù)可能需要更新到 Windows 10 Pro。
  2. 啟用 WSL 2:打開(kāi) PowerShell 以管理員身份運(yùn)行以下命令:
wsl --install
  1. 下載 Docker Desktop:訪問(wèn) ??Docker 官方下載頁(yè)面??,下載適用于 Windows 的 Docker Desktop 安裝包。
  2. 安裝 Docker Desktop:雙擊下載的安裝包,按照提示完成安裝。
  3. 啟動(dòng) Docker Desktop:安裝完成后,啟動(dòng) Docker Desktop。首次啟動(dòng)時(shí),可能需要幾分鐘時(shí)間來(lái)初始化。

1.2 macOS

  1. 下載 Docker Desktop:訪問(wèn) ??Docker 官方下載頁(yè)面??,下載適用于 macOS 的 Docker Desktop 安裝包。
  2. 安裝 Docker Desktop:雙擊下載的 ??.dmg?? 文件,按照提示完成安裝。
  3. 啟動(dòng) Docker Desktop:安裝完成后,啟動(dòng) Docker Desktop。首次啟動(dòng)時(shí),可能需要幾分鐘時(shí)間來(lái)初始化。

1.3 Linux

  1. 更新系統(tǒng)
sudo apt-get update
sudo apt-get upgrade
  1. 安裝必要的包
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 設(shè)置穩(wěn)定版存儲(chǔ)庫(kù)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安裝 Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 啟動(dòng) Docker 服務(wù)
sudo systemctl start docker
sudo systemctl enable docker

2. 配置 Docker

2.1 配置鏡像加速

為了提高 Docker 鏡像的下載速度,可以配置國(guó)內(nèi)的鏡像加速器。編輯 ??/etc/docker/daemon.json?? 文件,添加如下內(nèi)容:

{
  "registry-mirrors": ["https://<Your-ID>.mirror.aliyuncs.com"]
}

然后重啟 Docker 服務(wù):

sudo systemctl restart docker

3. 創(chuàng)建 Java 應(yīng)用

假設(shè)你已經(jīng)有一個(gè)簡(jiǎn)單的 Spring Boot 應(yīng)用程序,目錄結(jié)構(gòu)如下:

my-java-app/
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── MyAppApplication.java
│   │   └── resources
│   │       └── application.properties
├── pom.xml
└── Dockerfile

3.1 編寫(xiě) ??Dockerfile??

在項(xiàng)目根目錄下創(chuàng)建一個(gè)名為 ??Dockerfile?? 的文件,內(nèi)容如下:

# 使用官方的 OpenJDK 鏡像作為基礎(chǔ)鏡像
FROM openjdk:11-jdk-slim as build

# 設(shè)置工作目錄
WORKDIR /app

# 將項(xiàng)目文件復(fù)制到容器中
COPY . .

# 構(gòu)建 Java 項(xiàng)目
RUN ./mvnw clean package

# 使用構(gòu)建階段生成的 jar 文件創(chuàng)建一個(gè)新的鏡像層
FROM openjdk:11-jre-slim

# 設(shè)置工作目錄
WORKDIR /app

# 將構(gòu)建階段生成的 jar 文件復(fù)制到新的鏡像層中
COPY --from=build /app/target/my-app.jar /app/my-app.jar

# 暴露應(yīng)用程序端口
EXPOSE 8080

# 啟動(dòng)應(yīng)用程序
ENTRYPOINT ["java", "-jar", "/app/my-app.jar"]

4. 構(gòu)建 Docker 鏡像

在項(xiàng)目根目錄中運(yùn)行以下命令來(lái)構(gòu)建 Docker 鏡像:

docker build -t my-java-app .

5. 運(yùn)行 Docker 容器

使用以下命令來(lái)運(yùn)行 Docker 容器:

docker run -d -p 8080:8080 --name my-java-app-container my-java-app

其中 ??-d??? 表示后臺(tái)運(yùn)行,??-p 8080:8080??? 表示將宿主機(jī)的 8080 端口映射到容器的 8080 端口,??--name my-java-app-container?? 表示為容器指定一個(gè)名稱(chēng)。

6. 訪問(wèn) Java 應(yīng)用

打開(kāi)瀏覽器,訪問(wèn) ??http://localhost:8080??,你應(yīng)該能看到你的 Java 應(yīng)用程序的響應(yīng)。

7. 管理 Docker 容器和鏡像

7.1 列出所有運(yùn)行的容器

docker ps

7.2 列出所有容器(包括停止的)

docker ps -a

7.3 停止容器

docker stop <container-id>

7.4 刪除容器

docker rm <container-id>

7.5 列出所有鏡像

docker images

7.6 刪除鏡像

docker rmi <image-id>

8. 高級(jí)配置

8.1 使用環(huán)境變量

通過(guò)環(huán)境變量可以靈活配置應(yīng)用程序,避免硬編碼。在 ??Dockerfile?? 中定義環(huán)境變量:

ENV SPRING_PROFILES_ACTIVE=prod

在運(yùn)行容器時(shí),可以通過(guò) ??-e?? 參數(shù)傳遞環(huán)境變量:

docker run -d -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod --name my-java-app-container my-java-app

8.2 數(shù)據(jù)持久化

使用 Docker 卷(Volume)可以實(shí)現(xiàn)數(shù)據(jù)的持久化,避免數(shù)據(jù)丟失。在 ??docker-compose.yml?? 中定義卷,并掛載到容器中:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - app-data:/app/data
volumes:
  app-data:

9. 使用 Docker Compose 管理多容器應(yīng)用

假設(shè)你的 Java 應(yīng)用程序依賴(lài)于 MySQL 數(shù)據(jù)庫(kù),可以使用 Docker Compose 來(lái)管理多個(gè)服務(wù)。

9.1 創(chuàng)建 ??docker-compose.yml?? 文件

在項(xiàng)目根目錄中創(chuàng)建一個(gè)名為 ??docker-compose.yml?? 的文件,內(nèi)容如下:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/mydb
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pass
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

9.2 啟動(dòng) Docker Compose

在包含 ??docker-compose.yml?? 文件的目錄中運(yùn)行以下命令來(lái)啟動(dòng)所有服務(wù):

docker-compose up -d

其中 ??-d?? 表示后臺(tái)運(yùn)行。

10. 總結(jié)

通過(guò)以上步驟,你可以在本地計(jì)算機(jī)上成功安裝和配置 Docker,并使用 Docker 來(lái)部署 Java 服務(wù)。Docker 的輕量級(jí)、可移植和高效的特點(diǎn)使得開(kāi)發(fā)者可以在任何支持 Docker 的環(huán)境中快速搭建和運(yùn)行應(yīng)用。希望這些步驟對(duì)你有所幫助,祝你在 Docker 學(xué)習(xí)和實(shí)踐中取得成功!

以上就是本地使用Docker部署Java服務(wù)的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于Docker部署Java服務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問(wèn)題

    Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問(wèn)題

    這篇文章主要介紹了Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring注解之@validated使用詳解

    Spring注解之@validated使用詳解

    spring-boot中可以用@validated來(lái)校驗(yàn)數(shù)據(jù),如果數(shù)據(jù)異常則會(huì)統(tǒng)一拋出異常,方便異常中心統(tǒng)一處理,這篇文章主要介紹了Spring注解之@validated使用,需要的朋友可以參考下
    2023-01-01
  • idea項(xiàng)目debug模式無(wú)法啟動(dòng)的解決

    idea項(xiàng)目debug模式無(wú)法啟動(dòng)的解決

    這篇文章主要介紹了idea項(xiàng)目debug模式無(wú)法啟動(dòng)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

    mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

    本文主要介紹了mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • java使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作

    java使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作

    在多線程編程中,經(jīng)常需要實(shí)現(xiàn)一種機(jī)制來(lái)協(xié)調(diào)多個(gè)線程的執(zhí)行,以確保某些操作在所有線程完成后再進(jìn)行,CountDownLatch?就是?Java?并發(fā)包中提供的一種同步工具,下面我們就來(lái)看看如何使用CountDownLatch實(shí)現(xiàn)多線程協(xié)作吧
    2023-11-11
  • 淺析Java中的動(dòng)態(tài)代理

    淺析Java中的動(dòng)態(tài)代理

    動(dòng)態(tài)代理指代理類(lèi)和目標(biāo)類(lèi)的關(guān)系在程序運(yùn)行的時(shí)候確定的,客戶(hù)通過(guò)代理類(lèi)來(lái)調(diào)用目標(biāo)對(duì)象的方法。本文將通過(guò)案例詳細(xì)講解一下Java動(dòng)態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-09-09
  • SpringCloud Feign原理剖析

    SpringCloud Feign原理剖析

    feign是用在微服務(wù)中,各個(gè)微服務(wù)間的調(diào)用,它是通過(guò)聲明式的方式來(lái)定義接口,而不用實(shí)現(xiàn)接口,feign讓服務(wù)間的調(diào)用變得簡(jiǎn)單,不用各個(gè)服務(wù)去處理http client相關(guān)的邏輯,本文詳細(xì)介紹SpringCloud Feign原理,需要的朋友可以參考下
    2023-06-06
  • mybatis中嵌套使用foreach需要注意的坑

    mybatis中嵌套使用foreach需要注意的坑

    在使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),如果需要在一個(gè)大的foreach標(biāo)簽中嵌套另一個(gè)foreach,需要注意內(nèi)層foreach的item屬性不能與外層重復(fù),如果出現(xiàn)重復(fù),會(huì)導(dǎo)致綁定參數(shù)時(shí)找不到正確的參數(shù),從而拋出異常
    2024-09-09
  • Java實(shí)現(xiàn)ECDSA簽名算法

    Java實(shí)現(xiàn)ECDSA簽名算法

    這篇文章主要介紹了Java實(shí)現(xiàn)ECDSA簽名算法,幫助大家更好得利用Java實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下
    2020-10-10
  • Java同步鎖Synchronized底層源碼和原理剖析(推薦)

    Java同步鎖Synchronized底層源碼和原理剖析(推薦)

    這篇文章主要介紹了Java同步鎖Synchronized底層源碼和原理剖析,釋放后,進(jìn)入減減操作、直到為0然后喚醒隊(duì)列,讓他們?nèi)?zhēng)奪鎖,循環(huán)前面步驟,對(duì)Java同步鎖Synchronized相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05

最新評(píng)論

萝北县| 湘潭市| 惠水县| 陇川县| 闵行区| 新宾| 望都县| 吴桥县| 顺义区| 永兴县| 三穗县| 南郑县| 会东县| 太白县| 北川| 分宜县| 浪卡子县| 玉门市| 新安县| 吕梁市| 横山县| 庆元县| 周口市| 郸城县| 吴川市| 巴青县| 汽车| 博客| 颍上县| 建始县| 阳新县| 尉犁县| 凉山| 宣化县| 渑池县| 长宁县| 中方县| 甘孜| 龙南县| 涟水县| 安丘市|