我的nodejs application
和redis database
有两个容器。我使用docker compose file
用这个命令docker-compose up -d --build
创建了两个容器,容器启动,我的redis连接建立,我可以在日志上看到它已经连接并准备好使用。登录时,我编写了一个逻辑,将用户refresh token
和user id
存储在redis database
中。这已经在当地进行了测试,效果非常好。没有问题。但是,当我通过docker容器创建和运行应用程序时,用户登录时redis database
中不会存储任何内容。我甚至不知道从哪里开始揭穿,因为它根本没有给我任何想法。若我在docker容器外部本地运行相同的代码,它运行得很好。这是我的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
。在当地,一切都很好,只是不能通过码头集装箱工作,请帮助我。
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