本章節(jié)開始 我們在docker下 進行 spring Boot項目操作redis
準備工作:
(1) 創(chuàng)建文件夾:usr/local/work/share
(2) 拉取項目,這是一個打包好的jar包
(3) 將拉取的 jar包放到剛剛創(chuàng)建的文件夾下,同時再創(chuàng)建一個名字為 docker-compose.yml的文件
(4) 在 tmp目錄中創(chuàng)建一個 data 文件夾
(5) 并在 docker-compose.yml文件中寫入以下內容:
redis:
image: redis:3
ports:
- "6379:6379"
volumes:
- /tmp/data:/data
- java:
image: bolingcavalry/springbootrun:0.0.1
links:
- redis:redishost
volumes:
- /usr/local/work/share:/usr/Downloads
ports:
- "8080:8080"
tty: true
這里我們只對 volumes 進行講解,簡單明了的說就是: docker 中 redis 容器存儲的數(shù)據(jù)進行持久化到本地目錄
官方說法:
Redis端口6379已經由Redis預先配置好,從容器中暴露給主機,在docker-compose.yml文件中,將它從主機暴露給外部,這樣就可以為任何節(jié)點到Redis桌面管理器中,并管理這個Redis實例。 最重要的是,redis規(guī)范中有幾件事情使數(shù)據(jù)在這個堆棧的部署之間持續(xù)存在:redis總是在管理器上運行,所以它總是使用相同的文件系統(tǒng);redis在主機的文件系統(tǒng)中訪問一個任意目錄作為容器內部的/data,這是Redis存儲數(shù)據(jù)的地方。
總之,這是在Redis數(shù)據(jù)的主機物理文件系統(tǒng)中創(chuàng)建“真實來源”。如果沒有這個,Redis將把它的數(shù)據(jù)存儲在容器文件系統(tǒng)中的/data中,如果這個容器被重新部署的話,這些數(shù)據(jù)將被清除。 這個真實來源有兩個組成部分:placement在Redis服務上的placement約束,確保它始終使用相同的主機;創(chuàng)建的volumes允許容器作為/data(在Redis容器內)訪問/data(在主機上),在容器來來去去的時候,存儲在指定主機上的/data文件將會持續(xù)存在,從而保持連續(xù)性。
二.啟動容器
將上面的內容寫到docker-compose.yml之后,在此文件所在目錄執(zhí)行命令docker-compose up -d,即可啟動兩個容器,再執(zhí)行docker ps可以看到容器信息如下:
jar包下載下來后,放入本機的/usr/local/work/share目錄,這個目錄和容器的/usr/Downloads是映射關系,所以我們進入容器后可以直接訪問這個文件;
三,部署jar包
執(zhí)行以下命令進入運行springboot容器:
docker exec -it share_java_1 /bin/bash
進入/usr/Downloads目錄,可以看到文件:
redistempletedemo-0.0.1-SNAPSHOT.jar
執(zhí)行以下命令啟動容器:
java -jar redistempletedemo-0.0.1-SNAPSHOT.jar
啟動成功,信息如下:
本地測試
執(zhí)行
http://localhost:8080/set/name/hxy
執(zhí)行
http://localhost:8080/get/name
我們再登上redis容器去檢查一下,執(zhí)行以下命令進入redis容器:
docker exec -it share_redis_1 /bin/bash
redis-cli
在控制臺執(zhí)行get name即可看到name對應的值,如下所示:
簡單的測試已經成功,上面我們也說到只要 redis 的容器關閉所有的數(shù)據(jù)將全部消失,但是我們在上面的docker-compose.yml中配置了
volumes: - /tmp/data:/data
這就說明剛剛保存的數(shù)據(jù)持久化到了本地 tmp/data目錄下.打開 tmp/data會發(fā)現(xiàn)一個名字叫dump.rdb的文件
用終端打開它輸入命令: vi dump.rdb 就會看到你剛剛保存的數(shù)據(jù)name:hxy
到此 dcoker下redis 的持久化就說到這里,如果有更好的方式請多指教.感謝你看到這里。
相關項目: https://github.com/haoxiaoyong1014/springboot-examples/tree/master/springboot-redis-docker
補充知識:Docker 下安裝 Redis 啟動并設置密碼、開啟持久化
拉取鏡像
docker pull redis:5.0
啟動并設置密碼、開啟持久化
docker run -d --name redis-server -p 6379:6379 redis:5.0 --requirepass "mypassword" --appendonly yes
以上這篇docker下的 redis 之持久化存儲詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。