一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - docker構建打包java項目

docker構建打包java項目

2023-12-03 01:04未知服務器之家 Java教程

docker構建打包java項目 簡介 本項目用于 研究和實踐 docker的工作流部署發布 查看github源碼 技術棧 spring-web (RESTAPI 請求交互) redis (用于實驗 多容器通信) maven docker常用命令 docker --help 可查看幫助指令 查看 鏡像列表 docker image

docker構建打包java項目

簡介

本項目用于 研究和實踐 docker的工作流部署發布

查看github源碼

技術棧

  • spring-web (RESTAPI 請求交互)
  • redis (用于實驗 多容器通信)
  • maven

docker常用命令

docker --help 可查看幫助指令

查看 鏡像列表

docker image ls

查看 容器列表

docker container ls

查看 日志

docker logs [容器containerId]

docker部署

1. docker創建網絡空間,以便多容器在同網絡里可通信

docker network create web-demo-net

2. 獲取redis鏡像

docker pull redis:latest
  • :latest拉取最新版鏡像

3. redis鏡像運行成容器

docker run -d -p 6379:6379 \
--name web-demo-redis \
--network web-demo-net \
--network-alias redis-net \
-v redis-data:/data \
redis:latest
  • -d 后臺啟動
  • -p 6379:6379 容器的端口(:后面的6379) 映射 成 宿主機的端口(:前面的6379)
  • --name 給容器命名
  • --network 指定使用的網絡空間,同網絡空間的容器才可通信
  • --network-alias 指定本容器所使用網絡地址的別名:redis-net, web項目配置文件中的redis連接host即為 redis-net ,(很重要!相當于分配獨有有ip地址)
  • -v 指定數據卷映射,其中redis-data是創建的數據卷名稱,實際物理數據在宿主機,邏輯數據在容器中。其中/data為容器應用生成的數據路徑
  • redis:latest 指定生成容器所使用的鏡像名和版本標簽

4. docker打包web項目為鏡像

Dockfilebuild文件編寫

# 獲取運行環境
FROM    openjdk:17
# 把本地文件目錄 解析到 容器目錄(容器若沒有會自動創建文件夾)
ADD     ./target/web-demo.jar   /usr/local/workspace/web-demo/web-demo.jar
# 設置工作目錄空間,方便后續操作指令
WORKDIR /usr/local/workspace/web-demo
# 執行指令
CMD     java -jar web-demo.jar

打包命令

docker buildx b -t web-demo:v1 .
  • -t 命名鏡像名稱, :v1 指定版本標簽tag
  • . 構建目錄為當前目錄

5. web-demo鏡像運行成容器

docker run -d -p 8080:8080 --name web-demo --network web-demo-net web-demo:v1

6. 宿主機訪問web應用測試

  • localhost:8080
  • localhost:8080/hello

docker備份容器數據

利用中轉容器 目錄掛載 獲取 數據卷

docker run --rm \
 --volumes-from web-demo-redis \
 -v ~/backup:/backup \
  debian \
  tar cvf /backup/redis-data.tar /data
  • --rm 作為臨時容器啟動,運行后即刪除容器
  • --volumes-from 數據卷掛載來源 web-demo-redis
  • -v 數據卷映射目錄,冒號:前的~/backup是宿主機的絕對路徑,不再是上文中redis-data模式新建的數據卷名稱,它用來真正接收壓縮的備份文件。冒號:后的/backup是中轉linux系統的目錄,用來中轉臨時保存容器的壓縮數據。
  • debian 是指定的臨時系統鏡像名,可使用其他系統鏡像,如ubuntu等。
  • tar linux系統常用解壓縮工具,這里是把 復制的數據卷目錄/data壓縮為 /backup/redis-data.tar

已經備份結束,可在宿主機的 ~/backup目錄查看到壓縮的備份文件 redis-data.tar

docker恢復容器數據

測試時,可docker volume rm redis-data刪除數據卷,來模擬丟失數據

利用中轉容器 目錄掛載 獲取 備份文件

docker run --rm \
 --volumes-from web-demo-redis \
  -v ~/backup:/backup \
  debian \
  bash -c "cd /data/ && tar xvf /backup/redis-data.tar --strip 1"
  • --strip 1表示tar工具解壓時去掉前面1層目錄,這里去掉了tar壓縮包里的/data/目錄,根據壓縮時確定層級路徑是否需要此參數

備份已完成, dump.rdb 已經是舊數據文件

docker compose 一件啟動應用

上文手動啟動redis容器,再啟動web-demo容器,docker compose 可以 實現自動化一鍵啟動所以服務容器

修改網絡空間配置

上文中是手動配置web容器和redis容器的網絡空間 web-demo-net, docker compose 無需配置,自動會在同個網絡內,所以去掉web項目中的配置

修改 application-prod.ymlhost: redis-netcompose.yaml里設置的服務名redis

spring:
  data:
    redis:
#      host: redis-net  
      host: redis
      port: 6379

編寫 compose.yml

services:

  web-demo:
    # 當前目錄下的Dockerfile構建
    build: .
    ports:
      - '8080:8080'
    # 也給web項目一個數據卷
    volumes:
      - web-demo-data:/usr/local/workspace/web-demo
    environment:
      - TZ=Asia/Shanghai

  redis:
    image: 'redis:latest'
    volumes:
      - redis-data:/data
    environment:
      - TZ=Asia/Shanghai

volumes:
  web-demo-data:
  redis-data:

啟動 compose

在 compose.yaml目錄

docker compose up

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠综合视频精品播放 | 亚洲欧美日韩另类在线一 | 国产乱叫456在线 | 欧美三级一区 | 亚洲v成人天堂影视 | 热久久天天拍天天拍热久久2018 | 免费片在线观看高清 | 欧美日韩精品一区二区三区视频在线 | 亚洲免费视频在线 | 日本mature乱子视频 | 久久亚洲精品AV成人无 | 交换余生在线播放免费 | 四虎884aa永久播放地址http | youwu在线影院| 国产suv精品一区二区四区三区 | 日产乱码卡一卡2卡三卡四福利 | 91se精品免费观看 | 国产特级| 91大神大战高跟丝袜美女 | 精品久久久噜噜噜久久久app | 日韩久久综合 | 国产人成77777视频网站 | 国内精品在线播放 | 无人在线视频高清免费观看动漫 | 高中生喷水喷浆 | 精品免费国产一区二区三区 | 99精品久久99久久久久久 | 精品综合 | 精品国产日韩亚洲一区在线 | 精品无码国产AV一区二区三区 | 97蝌蚪自拍自窝 | 小草视频免费观看在线 | av在线亚洲男人的天堂 | 丝瓜茄子绿巨人秋葵榴莲污 | 波多野给衣一区二区三区 | porno日本大学生高清 | 深夜草莓视频 | 国产亚洲精aa在线观看不卡 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 日韩中文字幕网站 | free性丰满hd性欧美人体 |