本地使用Docker部署Java服務(wù)的詳細步驟
引言
在本地使用 Docker 部署 Java 服務(wù)是一個常見的做法,可以幫助開發(fā)者在本地環(huán)境中快速搭建、測試和調(diào)試 Java 應(yīng)用程序。以下是詳細的步驟指南,幫助你在本地計算機上使用 Docker 部署 Java 服務(wù)。
1. 安裝 Docker
1.1 Windows
- 檢查系統(tǒng)要求:確保你的 Windows 版本是 Windows 10 Pro、Enterprise 或 Education(Build 14393 或更高版本)。家庭版用戶可能需要更新到 Windows 10 Pro。
- 啟用 WSL 2:打開 PowerShell 以管理員身份運行以下命令:
wsl --install
- 下載 Docker Desktop:訪問 ??Docker 官方下載頁面??,下載適用于 Windows 的 Docker Desktop 安裝包。
- 安裝 Docker Desktop:雙擊下載的安裝包,按照提示完成安裝。
- 啟動 Docker Desktop:安裝完成后,啟動 Docker Desktop。首次啟動時,可能需要幾分鐘時間來初始化。
1.2 macOS
- 下載 Docker Desktop:訪問 ??Docker 官方下載頁面??,下載適用于 macOS 的 Docker Desktop 安裝包。
- 安裝 Docker Desktop:雙擊下載的 ?
?.dmg?? 文件,按照提示完成安裝。 - 啟動 Docker Desktop:安裝完成后,啟動 Docker Desktop。首次啟動時,可能需要幾分鐘時間來初始化。
1.3 Linux
- 更新系統(tǒng):
sudo apt-get update sudo apt-get upgrade
- 安裝必要的包:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 Docker 的官方 GPG 密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 設(shè)置穩(wěn)定版存儲庫:
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
- 安裝 Docker Engine:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
- 啟動 Docker 服務(wù):
sudo systemctl start docker sudo systemctl enable docker
2. 配置 Docker
2.1 配置鏡像加速
為了提高 Docker 鏡像的下載速度,可以配置國內(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)有一個簡單的 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 編寫 ??Dockerfile??
在項目根目錄下創(chuàng)建一個名為 ??Dockerfile?? 的文件,內(nèi)容如下:
# 使用官方的 OpenJDK 鏡像作為基礎(chǔ)鏡像 FROM openjdk:11-jdk-slim as build # 設(shè)置工作目錄 WORKDIR /app # 將項目文件復(fù)制到容器中 COPY . . # 構(gòu)建 Java 項目 RUN ./mvnw clean package # 使用構(gòu)建階段生成的 jar 文件創(chuàng)建一個新的鏡像層 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 # 啟動應(yīng)用程序 ENTRYPOINT ["java", "-jar", "/app/my-app.jar"]
4. 構(gòu)建 Docker 鏡像
在項目根目錄中運行以下命令來構(gòu)建 Docker 鏡像:
docker build -t my-java-app .
5. 運行 Docker 容器
使用以下命令來運行 Docker 容器:
docker run -d -p 8080:8080 --name my-java-app-container my-java-app
其中 ??-d??? 表示后臺運行,??-p 8080:8080??? 表示將宿主機的 8080 端口映射到容器的 8080 端口,??--name my-java-app-container?? 表示為容器指定一個名稱。
6. 訪問 Java 應(yīng)用
打開瀏覽器,訪問 ??http://localhost:8080??,你應(yīng)該能看到你的 Java 應(yīng)用程序的響應(yīng)。
7. 管理 Docker 容器和鏡像
7.1 列出所有運行的容器
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. 高級配置
8.1 使用環(huán)境變量
通過環(huán)境變量可以靈活配置應(yīng)用程序,避免硬編碼。在 ??Dockerfile?? 中定義環(huán)境變量:
ENV SPRING_PROFILES_ACTIVE=prod
在運行容器時,可以通過 ??-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)可以實現(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)用程序依賴于 MySQL 數(shù)據(jù)庫,可以使用 Docker Compose 來管理多個服務(wù)。
9.1 創(chuàng)建 ??docker-compose.yml?? 文件
在項目根目錄中創(chuàng)建一個名為 ??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 啟動 Docker Compose
在包含 ??docker-compose.yml?? 文件的目錄中運行以下命令來啟動所有服務(wù):
docker-compose up -d
其中 ??-d?? 表示后臺運行。
10. 總結(jié)
通過以上步驟,你可以在本地計算機上成功安裝和配置 Docker,并使用 Docker 來部署 Java 服務(wù)。Docker 的輕量級、可移植和高效的特點使得開發(fā)者可以在任何支持 Docker 的環(huán)境中快速搭建和運行應(yīng)用。希望這些步驟對你有所幫助,祝你在 Docker 學(xué)習和實踐中取得成功!
以上就是本地使用Docker部署Java服務(wù)的詳細步驟的詳細內(nèi)容,更多關(guān)于Docker部署Java服務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問題
這篇文章主要介紹了Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
java使用CountDownLatch實現(xiàn)多線程協(xié)作
在多線程編程中,經(jīng)常需要實現(xiàn)一種機制來協(xié)調(diào)多個線程的執(zhí)行,以確保某些操作在所有線程完成后再進行,CountDownLatch?就是?Java?并發(fā)包中提供的一種同步工具,下面我們就來看看如何使用CountDownLatch實現(xiàn)多線程協(xié)作吧2023-11-11
Java同步鎖Synchronized底層源碼和原理剖析(推薦)
這篇文章主要介紹了Java同步鎖Synchronized底層源碼和原理剖析,釋放后,進入減減操作、直到為0然后喚醒隊列,讓他們?nèi)帄Z鎖,循環(huán)前面步驟,對Java同步鎖Synchronized相關(guān)知識感興趣的朋友一起看看吧2022-05-05

