【问题标题】:Redis docker container not storing data in redis databaseRedis docker容器未将数据存储在redis数据库中
【发布时间】:2022-10-23 06:18:40
【问题描述】:

我的nodejs applicationredis database 有两个容器。我使用docker compose file 使用此命令docker-compose up -d --build 创建了两个容器,容器启动,我的redis 连接建立,我可以在日志中看到它已连接并准备好使用。 登录时,我编写了一个逻辑,将用户refresh tokenuser id 存储在redis database 中。这已经在本地进行了测试并且效果很好。没有问题。 但是当我通过 docker 容器创建和运行应用程序时,用户登录时没有任何内容存储在 redis database 中。我什至不知道从哪里开始调试,因为它根本没有给我任何想法。 如果我在 docker 容器外本地运行相同的代码,它运行良好。 这是我的码头文件:

FROM  node:lts-alpine

WORKDIR /app

COPY package*.json ./

COPY client/package*.json client/
RUN npm run install-client --only=production


COPY api/package*.json api/
RUN npm run install-api --only=production



COPY client/ client/
RUN npm run client-build --prefix client


COPY api/ api/



USER node

CMD [ "npm", "start", "--prefix", "api" ]



EXPOSE 5000

我的撰写文件:

version: "3"
services:
  redisdb:
    container_name: redisdb
    hostname: redis
    image: redis
    ports:
      - "6379:6379"


  fullstack-cms:
    build: .
    ports:
      - "5000:5000"
    env_file:
      - ./api/.env
    depends_on:
      - redisdb

它没有显示任何错误。当我使用console.log 并检查代码中redis 变量的值时,它显示undefined。在本地,一切正常,只是不能通过 docker 容器工作,请帮助我。

【问题讨论】:

    标签: node.js docker docker-compose dockerfile containers


    【解决方案1】:

    默认情况下,redis 图像已禁用持久性。此处提供完整文档:https://hub.docker.com/_/redis/

    version: "3"
    services:
      redisdb:
        container_name: redisdb
        hostname: redis
        image: redis
        command: redis-server
        volumes:
            - /host/path/to/your/redis/data:/data
        ports:
          - "6379:6379"
    
    
      fullstack-cms:
        build: .
        ports:
          - "5000:5000"
        env_file:
          - ./api/.env
        depends_on:
          - redisdb
    

    【讨论】:

    • 谢谢你试图帮助我。请问,我如何获得我的redis数据的确切路径?
    • 您选择了希望数据在 docker 主机上的位置。
    • 命令标志呢?它有什么作用?
    • 谢谢你。我按照你的建议做了:我添加了卷:-缓存:/数据并在最后声明了这样的卷:卷:缓存:。图像已重建并连接了 redis,但仍然是同样的问题。它不存储任何东西
    • @ThatkingzThatkingz 我认为它必须是一条绝对路径。所以它必须以 / 开头