保存docker容器数据

yx2lnoni  于 2021-06-10  发布在  Redis
关注(0)|答案(2)|浏览(419)

我试图在redis中保存python应用程序的数据,但是当我停止docker compose文件时,数据将被删除,当我再次运行docker compose文件时,它将从头开始。我想保存容器的数据,无论何时启动,它都从容器退出时离开的位置开始。例如,当我退出容器时,它显示 Hello World! I have been seen b'6' times. 当我重新启动容器时,它应该从 Hello World! I have been seen b'6' times. ```
version: "3.7"

services:
nginx_app:
image: nginx:latest
depends_on:
- flask_app
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
ports:
- 8082:80
networks:
- my_project_network

flask_app:
build:
context: .
dockerfile: Dockerfile
expose:
- 5000
depends_on:
- redis_app
networks:
- my_project_network

redis_app:
image: redis:latest
command: redis-server --requirepass 1234
volumes:
- ./redis-vol:/data
expose:
- 6379
networks:
- my_project_network

networks:
my_project_network:
external: true

python文件:

from flask import Flask
from redis import Redis
app = Flask(name)
redis = Redis(host='redis_app', port=6379, password='123a')
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello World! I have been seen %s times.' % redis.get('hits')
if name == "main":
app.run(host="0.0.0.0", debug=True)

mwngjboj

mwngjboj1#

如果您阅读有关“卷”的文档,您会发现:
https://kubernetes.io/docs/concepts/storage/volumes/
另一方面,kubernetes卷有一个显式的生存期——与包围它的pod相同。因此,一个卷比在pod中运行的任何容器都长,并且数据在容器重新启动时被保留。当然,当一个豆荚不复存在时,体积也将不复存在。也许比这更重要的是,kubernetes支持多种类型的卷,一个pod可以同时使用任意数量的卷。
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
简而言之,您需要更改为持久卷。

lp0sw83n

lp0sw83n2#

您需要向redis服务添加一个卷。
我记得,redis图像的内部路径是 /data . 把这个卷装到你的docker里。
别忘了加上 --appendonly yes 你的redis命令。

相关问题