gpt4 book ai didi

docker - 为什么redis保存后volume文件夹是空的?

转载 作者:可可西里 更新时间:2023-11-01 11:14:49 28 4
gpt4 key购买 nike

代码

我正在尝试运行在 docker-compose.yml 中定义的 redis 服务,如下所示:

version: '3'
services:
redis:
image: "redis:5-alpine"
volumes:
- ./redis-vol:/home/data
app:
build: .
ports:
- 8080:8080
volumes:
- .:/home/app/

这是 Dockerfile:

FROM python:2.7-alpine3.8
WORKDIR /home/app
COPY ./requirements.txt .
RUN apk add python2-dev build-base linux-headers pcre-dev && \
pip install -r requirements.txt
# Source files
COPY ./api.py .
COPY ./conf.ini .
CMD ["uwsgi", "--ini", "conf.ini"]

该应用程序包含在端口 8080 上运行 uwsgi 接口(interface)的代码片段

import uwsgi
import redis
r = redis.Redis('redis')
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
r.append('hello', 'world!')
r.save()
return [b"Hello World"]

这是 conf.ini 文件:

[uwsgi]
http = :8080
wsgi-file = api.py
master = true
process = 2
enable-threads = true
uid = 1001
gid = 1001

应用服务应该在每次收到对 http://localhost:8080 的请求时通过 Redis 保存一个 key:value 对。请求成功后,docker-compose 进程返回以下日志:

redis_1_bdf757fbb2bf | 1:M 26 Nov 2018 15:38:20.399 * DB saved on disk
app_1_5f729e6bcd36 | [pid: 17|app: 0|req: 1/1] 172.21.0.1 () {38 vars in 690 bytes} [Mon Nov 26 15:38:20 2018] GET / => generated 11 bytes in 8 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
redis_1_bdf757fbb2bf | 1:M 26 Nov 2018 15:38:20.998 * DB saved on disk
app_1_5f729e6bcd36 | [pid: 17|app: 0|req: 2/2] 172.21.0.1 () {40 vars in 691 bytes} [Mon Nov 26 15:38:20 2018] GET /favicon.ico => generated 11 bytes in 4 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)

问题

尽管 DB 保存在磁盘上 日志,redis_vol 文件夹是空的,dump.rdb 文件似乎没有保存在其他任何地方。

我做错了什么?我也尝试使用 redis:alpine 作为图像,但在启动时出现以下错误:

redis_1_bdf757fbb2bf | 1:M 26 Nov 14:57:27.003 # Can't handle RDB format version 9
redis_1_bdf757fbb2bf | 1:M 26 Nov 14:57:27.003 # Fatal error loading the DB: Invalid argument. Exiting.

而且我也试过在redis服务中映射dump.rdb如下:

  redis:
image: "redis:5-alpine"
volumes:
- ./redis-vol/dump.rdb:/home/data/dump.rdb

但是 docker 创建了一个名为 dump.rdb/ 的文件夹,而不是一个可读文件。

最佳答案

如果将体积映射更改为 <your-volume>:/data

确保删除之前的容器 docker container prune在再次重新启动容器之前

关于docker - 为什么redis保存后volume文件夹是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53485205/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com