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

Docker容器化部署Spring?Boot項目實戰(zhàn)指南(最新整理)

 更新時間:2026年02月27日 11:02:12   作者:鹽城吊霸天  
本文給大家介紹Docker容器化部署Spring?Boot項目實戰(zhàn)指南,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一、項目背景與技術(shù)棧

1. 項目概述

  • 項目名稱:Spring Boot應(yīng)用
  • 核心功能:用戶管理系統(tǒng)(UserIndexController)
  • 技術(shù)棧
    • Spring Boot
    • JSP視圖
    • MySQL數(shù)據(jù)庫
    • Docker容器化

2. 部署目標

  • 將Spring Boot應(yīng)用容器化
  • 將MySQL數(shù)據(jù)庫容器化
  • 實現(xiàn)容器間網(wǎng)絡(luò)通信
  • 確保應(yīng)用正常訪問

二、Docker基礎(chǔ)配置

1. 環(huán)境準備

  • Docker版本:支持Docker Compose
  • 網(wǎng)絡(luò)配置:默認bridge網(wǎng)絡(luò)或自定義網(wǎng)絡(luò)
  • 存儲配置:Docker卷用于MySQL數(shù)據(jù)持久化
  • 網(wǎng)絡(luò)環(huán)境:需要穩(wěn)定的網(wǎng)絡(luò)連接(鏡像拉取可能需要科學(xué)上網(wǎng))

2. 核心概念

  • 鏡像:應(yīng)用的可執(zhí)行包
  • 容器:鏡像的運行實例
  • 網(wǎng)絡(luò):容器間通信的橋梁
  • :數(shù)據(jù)持久化存儲

三、Spring Boot項目配置

1. JSP視圖配置

問題:訪問UserIndexController的listUser方法跳轉(zhuǎn)"index"頁面時出現(xiàn)404錯誤 解決方案

修改pom.xml:配置JSP文件打包

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <includes><include>**/*.*</include></includes>
    </resource>
    <resource>
        <directory>src/main/webapp/WEB-INF/jsp</directory>
        <targetPath>WEB-INF/jsp</targetPath>
        <includes><include>**/*.*</include></includes>
    </resource>
</resources>

修改application.properties:配置JSP視圖解析器

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

2. 數(shù)據(jù)庫配置

配置文件:application.properties

spring.datasource.url=jdbc:mysql://mysql8:3306/wxdev?
useUincode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

四、MySQL容器部署

1. 基礎(chǔ)部署

# 運行MySQL容器

docker run -d --name mysql8 -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=wxdev \
  -v mysql-data:/var/lib/mysql \
  mysql:8.0

2. 數(shù)據(jù)持久化

  • 使用Docker卷:-v mysql-data:/var/lib/mysql
  • 優(yōu)勢:容器重啟后數(shù)據(jù)不丟失,便于備份和遷移

3. 網(wǎng)絡(luò)配置

  • 默認網(wǎng)絡(luò):容器IP通常為172.17.0.x
  • 端口映射:-p 3306:3306,宿主機可訪問
  • 實際IP:MySQL容器IP為172.17.0.2(最終使用此IP連接)

五、Spring Boot應(yīng)用容器化

1. 項目打包

運行

# 清理并打包項目

mvn clean package -DskipTests

2. Dockerfile配置

FROM amazoncorretto:8-alpine
COPY target/springboot-0.0.1-SNAPSHOT.war app.war
ENTRYPOINT ["java","-jar","/app.war"]

3. .dockerignore配置

問題:構(gòu)建時出現(xiàn)"target目錄不存在"錯誤 解決方案:修改.dockerignore文件

.git/
.gitignore
.idea/
*.iml
.DS_Store
*.log

# 不要包含target目錄

4. 構(gòu)建鏡像

問題:下載JDK8鏡像時失敗 解決方案:使用科學(xué)上網(wǎng)工具后成功下載

# 構(gòu)建Spring Boot鏡像

docker build -t springboot-app .

六、容器網(wǎng)絡(luò)通信

1. 網(wǎng)絡(luò)模式選擇

  • 默認bridge網(wǎng)絡(luò):通過IP地址通信
  • 自定義網(wǎng)絡(luò):支持容器名稱DNS解析
  • host網(wǎng)絡(luò):與宿主機共享網(wǎng)絡(luò)(不推薦)

2. 連接方式

最終方案:使用容器IP連接

# 獲取MySQL容器IP(實際IP為172.17.0.2)
MYSQL_IP=$(docker inspect --format '{{range.NetworkSettings.
Networks}}{{.IPAddress}}{{end}}' mysql8)
# 運行Spring Boot容器(使用實際IP)
docker run -d --name springboot-app -p 8080:8080 \
  -e 'SPRING_DATASOURCE_URL=jdbc:mysql://172.17.0.2:3306/wxdev?
  useUincode=true&characterEncoding=utf-8' \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=root \
  springboot-app

備選方案:使用docker-compose

version: '3.8'
services:
  springboot-app:
    image: springboot-app
    container_name: springboot-app
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql8:3306/wxdev?
      useUincode=true&characterEncoding=utf-8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    depends_on:
      - mysql8
    networks:
      - app-network
    restart: unless-stopped
  mysql8:
    image: mysql:8.0
    container_name: mysql8
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=wxdev
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - app-network
    restart: unless-stopped
networks:
  app-network:
    driver: bridge
volumes:
  mysql-data:

3. 網(wǎng)絡(luò)連通性測試

運行

# 進入Spring Boot容器

docker exec -it springboot-app sh

# 測試IP連通性

ping 172.17.0.2

# 測試MySQL端口

telnet 172.17.0.2 3306

七、部署驗證

1. 容器狀態(tài)檢查

運行

# 查看所有容器狀態(tài)

docker ps

# 查看Spring Boot容器日志

docker logs springboot-app

# 查看MySQL容器日志

docker logs mysql8

2. 應(yīng)用訪問測試

運行

# 測試應(yīng)用訪問

curl http://localhost:8080/

# 查看應(yīng)用啟動狀態(tài)

docker logs springboot-app | grep "Started Application"

3. 數(shù)據(jù)庫連接測試

運行

# 進入MySQL容器

docker exec -it mysql8 mysql -u root -p

# 查看數(shù)據(jù)庫

show databases;

use wxdev;

show tables;

八、常見問題與解決方案

1. 構(gòu)建問題

  • 問題:.dockerignore包含target導(dǎo)致構(gòu)建失敗
  • 解決方案:修改.dockerignore移除target配置
  • 問題:鏡像拉取403 Forbidden或下載失敗
  • 解決方案:使用科學(xué)上網(wǎng)工具后成功下載,或使用國內(nèi)鏡像源
  • 問題:運行命令時-e: command not found
  • 解決方案:使用單引號包圍環(huán)境變量值

2. 網(wǎng)絡(luò)問題

  • 問題:UnknownHostException: mysql8
  • 解決方案:最終采用直接使用容器IP(172.17.0.2)連接的方式
  • 問題:127.0.0.1無法訪問
  • 解決方案:容器內(nèi)127.0.0.1指向容器本身,使用容器IP或網(wǎng)絡(luò)別名

3. 應(yīng)用問題

  • 問題:JSP文件404錯誤
  • 解決方案:確保JSP文件正確打包到WEB-INF/jsp目錄
  • 問題:數(shù)據(jù)庫連接失敗
  • 解決方案:使用容器實際IP(172.17.0.2)進行連接

九、最佳實踐

1. 鏡像管理

  • 使用官方基礎(chǔ)鏡像
  • 最小化鏡像大小
  • 定期更新鏡像
  • 準備科學(xué)上網(wǎng)環(huán)境以應(yīng)對鏡像拉取問題

2. 網(wǎng)絡(luò)配置

  • 生產(chǎn)環(huán)境使用自定義網(wǎng)絡(luò)
  • 開發(fā)環(huán)境可直接使用容器IP
  • 配置網(wǎng)絡(luò)安全策略

3. 存儲管理

  • 使用Docker卷持久化數(shù)據(jù)
  • 定期備份重要數(shù)據(jù)
  • 監(jiān)控存儲使用情況

4. 容器管理

  • 使用docker-compose管理多容器應(yīng)用
  • 配置健康檢查
  • 設(shè)置合理的重啟策略

5. 部署流程

  • 自動化構(gòu)建和部署
  • 環(huán)境變量分離
  • 版本控制和回滾機制

十、完整部署腳本

1. 一鍵部署腳本

#!/bin/bash
# 清理并打包項目
echo "=== 打包Spring Boot項目 ==="
mvn clean package -DskipTests
# 構(gòu)建Docker鏡像(注意:可能需要科學(xué)上網(wǎng))
echo "=== 構(gòu)建Docker鏡像 ==="
docker build -t springboot-app .
# 運行MySQL容器
echo "=== 運行MySQL容器 ==="
docker run -d --name mysql8 -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=wxdev \
  -v mysql-data:/var/lib/mysql \
  mysql:8.0
# 獲取MySQL容器IP
echo "=== 獲取MySQL容器IP ==="
MYSQL_IP=$(docker inspect --format '{{range.NetworkSettings.
Networks}}{{.IPAddress}}{{end}}' mysql8)
echo "MySQL容器IP: $MYSQL_IP"
# 運行Spring Boot容器(使用實際IP)
echo "=== 運行Spring Boot容器 ==="
docker run -d --name springboot-app -p 8080:8080 \
  -e 'SPRING_DATASOURCE_URL=jdbc:mysql://'$MYSQL_IP':3306/wxdev?
  useUincode=true&characterEncoding=utf-8' \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=root \
  springboot-app
# 驗證部署
echo "=== 驗證部署 ==="
sleep 10
docker ps
curl http://localhost:8080/

2. docker-compose部署

# docker-compose.yml
version: '3.8'
services:
  springboot-app:
    build: .
    container_name: springboot-app
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql8:3306/wxdev?
      useUincode=true&characterEncoding=utf-8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    depends_on:
      - mysql8
    networks:
      - app-network
    restart: unless-stopped
  mysql8:
    image: mysql:8.0
    container_name: mysql8
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=wxdev
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - app-network
    restart: unless-stopped
networks:
  app-network:
    driver: bridge
volumes:
  mysql-data:

# 啟動服務(wù)

docker-compose up -d

# 查看狀態(tài)

docker-compose ps

# 查看日志

docker-compose logs springboot-app

十一、總結(jié)

通過本指南,您已經(jīng)掌握了:

  1. Spring Boot項目容器化:包括JSP配置、Maven打包和Docker鏡像構(gòu)建
  2. MySQL容器化:包括數(shù)據(jù)持久化和網(wǎng)絡(luò)配置
  3. 容器網(wǎng)絡(luò)通信:最終采用容器IP(172.17.0.2)直接連接的方式
  4. 鏡像拉取問題:通過科學(xué)上網(wǎng)工具解決JDK8鏡像下載失敗問題
  5. 部署驗證:包括容器狀態(tài)檢查和應(yīng)用訪問測試
  6. 問題排查:包括常見錯誤的解決方案
  7. 最佳實踐:包括鏡像管理、網(wǎng)絡(luò)配置和容器管理

Docker容器化部署不僅提高了開發(fā)和部署效率,也為應(yīng)用的可擴展性和可維護性奠定了基礎(chǔ)。通過合理的配置和管理,您的Spring Boot應(yīng)用將在容器環(huán)境中穩(wěn)定運行。

到此這篇關(guān)于Docker容器化部署Spring Boot項目實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)docker容器化部署spring boot項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • centos 下docker 安裝方法

    centos 下docker 安裝方法

    這篇文章主要介紹了centos 下docker 安裝方法,本文只介紹比較簡易的安裝方式,需要的朋友可以參考下
    2018-10-10
  • docker Dockerfile文件制作自己的鏡像的方法

    docker Dockerfile文件制作自己的鏡像的方法

    這篇文章主要介紹了docker Dockerfile文件制作自己的鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Docker使用Link在容器之間建立連接

    Docker使用Link在容器之間建立連接

    這篇文章主要介紹了Docker使用Link在容器之間建立連接的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker設(shè)置日志滾動的解決方案

    Docker設(shè)置日志滾動的解決方案

    Docker容器默認將日志寫入同一文件,可能導(dǎo)致磁盤滿,解決方案包括修改全局docker.service配置或針對特定容器修改hostconfig.json,下面給大家介紹Docker設(shè)置日志滾動的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • Docker端口沖突5步快速定位并解決容器端口占用難題

    Docker端口沖突5步快速定位并解決容器端口占用難題

    ocker容器端口沖突是部署中的常見問題,通常因指定主機端口被其他進程或容器占用導(dǎo)致,這篇文章主要介紹了Docker端口沖突5步快速定位并解決容器端口占用難題的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-04-04
  • 快速安裝Docker詳細步驟教程

    快速安裝Docker詳細步驟教程

    這篇文章主要為大家詳細的介紹了快速安裝Docker的詳細步驟教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 教你Docker安裝GitLab功能

    教你Docker安裝GitLab功能

    Gitlab是一個開源分布式版本控制系統(tǒng),由Ruby開發(fā),有管理項目源代碼、版本控制、代碼復(fù)用與查找等功能,這篇文章主要介紹了Docker安裝GitLab,需要的朋友可以參考下
    2022-04-04
  • dockercompose應(yīng)用及說明

    dockercompose應(yīng)用及說明

    文章主要介紹了如何使用?Docker?Compose?一鍵開啟常用中間件,并提供了詳細的安裝步驟和測試方法,同時,還總結(jié)了一些常用的?Docker?命令
    2026-01-01
  • Docker Registry 實現(xiàn)原理、適用場景、常用操作及搭建過程

    Docker Registry 實現(xiàn)原理、適用場景、常用操作及搭建過程

    Docker Registry基于無狀態(tài)架構(gòu),支持多存儲后端與認證方式,用于私有鏡像管理、性能優(yōu)化及CI/CD集成,提供官方鏡像、Harbor和高可用部署方案,需注意安全、存儲規(guī)劃與備份,本文給大家介紹Docker Registry 實現(xiàn)原理、適用場景、常用操作,感興趣的朋友一起看看吧
    2025-09-09
  • docker centos7 安裝ssh具體步驟

    docker centos7 安裝ssh具體步驟

    這篇文章主要介紹了 docker centos7 安裝ssh相關(guān)資料,這里提供了詳細的具體安裝步驟,需要的朋友可以參考下
    2016-11-11

最新評論

玛纳斯县| 平山县| 恭城| 酉阳| 高尔夫| 泌阳县| 河曲县| 阳西县| 沙雅县| 土默特左旗| 收藏| 库伦旗| 贵州省| 阿坝县| 陆丰市| 黄龙县| 班玛县| 乌审旗| 清镇市| 花垣县| 化州市| 绥德县| 肥城市| 福鼎市| 石狮市| 含山县| 绩溪县| 三都| 卫辉市| 龙岩市| 六安市| 剑阁县| 敦化市| 拜泉县| 上思县| 宣恩县| 红安县| 缙云县| 大港区| 洛隆县| 芦溪县|