Python 保存Docker容器数据
我试图在redis中保存python应用程序的数据,但当我停止docker compose文件时,数据将被删除,当我再次运行docker compose文件时,它将从头开始。我想保存容器的数据,无论何时启动,它都从容器退出时离开的位置开始。例如,当我退出容器时,它会显示Python 保存Docker容器数据,python,docker,redis,docker-compose,dockerfile,Python,Docker,Redis,Docker Compose,Dockerfile,我试图在redis中保存python应用程序的数据,但当我停止docker compose文件时,数据将被删除,当我再次运行docker compose文件时,它将从头开始。我想保存容器的数据,无论何时启动,它都从容器退出时离开的位置开始。例如,当我退出容器时,它会显示helloworld!我已经看过6次了。当我重新启动容器时,它应该从Hello World开始!我已经见过6次了。 version: "3.7" services: nginx_app: imag
helloworld!我已经看过6次了。
当我重新启动容器时,它应该从Hello World开始!我已经见过6次了。
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)
您需要向redis服务添加一个卷 我记得,这个redis图像的内部路径是
/data
。只需在docker compose中装入此卷
不要忘了向redis命令中添加
——只添加yes
。您需要向redis服务添加一个卷
我记得,这个redis图像的内部路径是/data
。只需在docker compose中装入此卷
不要忘记将
--appendonly yes
添加到redis命令中。如果您阅读了有关“卷”的文档,您将发现:
另一方面,Kubernetes卷有一个明确的生存期-与包围它的Pod相同。因此,一个卷比Pod中运行的任何容器都要长,并且在容器重新启动时会保留数据。当然,当Pod不存在时,卷也将不存在。也许更重要的是,Kubernetes支持多种类型的卷,Pod可以同时使用任意数量的卷
简而言之,您需要更改为永久卷。如果您阅读有关“卷”的文档,您将发现: 另一方面,Kubernetes卷有一个明确的生存期-与包围它的Pod相同。因此,一个卷比Pod中运行的任何容器都要长,并且在容器重新启动时会保留数据。当然,当Pod不存在时,卷也将不存在。也许更重要的是,Kubernetes支持多种类型的卷,Pod可以同时使用任意数量的卷
简而言之,您需要更改为永久卷。您需要了解->我们可以使用数据卷吗?您需要了解->我们可以使用数据卷吗?您可以验证内部路径吗?或者提供一个我可以添加到redis的卷行?阅读标题为“从持久性存储开始”的段落
volumes:-./redis vol:/data
我已经添加了这一行,但仍然无法保存数据。我已经更新了问题,并在问题中添加了这一行,您的redis vol的内容是什么?第一次运行后,它应该包含redis数据库文件。是:),并且您应该会在/redis vol
中看到该文件。您可以验证内部路径吗?或者提供一个我可以添加到redis的卷行?阅读标题为“从持久性存储开始”的段落volumes:-./redis vol:/data
我已经添加了这一行,但仍然无法保存数据。我已经更新了问题,并在问题中添加了这一行,您的redis vol的内容是什么?第一次运行后,它应该包含redis数据库文件。是:)并且您应该会在/redis vol
中看到该文件。我以前没有与Kurbenetes合作过,尝试使用docker compose volumes进行此操作,但我认为我没有正确给出redis的路径-1:询问者没有询问Kurbenetes,引入kubernetes来解决一个可以用普通Docker卷解决的问题是一个不必要的复杂问题。我以前没有与kubernetes合作过,尝试用Docker compose卷来解决这个问题,但我认为我没有正确地给出redis的路径-1:询问者没有询问kubernetes,引入kubernetes来解决一个可以用正常Docker卷解决的问题是一个不必要的复杂问题。