【发布时间】:2020-12-18 03:51:36
【问题描述】:
我一直在尝试 dockerize 一个 api 。但是redis崩溃了。 Nodejs 和 mongodb 工作。
Docker-compose.yaml 文件
version: '3'
services:
mongo:
container_name: mongo
image: mongo
networks:
- webnet
ports:
- '27017:27017'
redis:
image: redis
container_name: redis
command: ["redis-server","--bind","redis","--port","6379"]
ports:
- '6379:6379'
hostname: redis
app:
container_name: password-manager-docker
restart: always
build: .
networks:
- webnet
ports:
- '80:5000'
links:
- mongo
- redis
environment:
MONGODB_URI: ${MONGODB_URI}
clientID: ${clientID}
clientSecret : ${clientSecret}
PORT: ${PORT}
NODE_ENV : ${NODE_ENV}
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
JWT_EXPIRE: ${JWT_EXPIRE}
REFRESH_TOKEN: ${REFRESH_TOKEN}
JWT_REFRESH_SECRET_KEY: ${JWT_REFRESH_SECRET_KEY}
JWT_REFRESH_EXPIRE: ${JWT_REFRESH_EXPIRE}
JWT_COOKIE: ${JWT_COOKIE}
networks:
webnet:
Docker 文件
FROM node:latest
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5000
CMD ["npm","start"]
错误是 Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379。 我该如何解决这个问题?
【问题讨论】:
-
从应用程序尝试连接到 redis:6379 而不是 127.0.0.1
-
我试过了。但是同样的错误。Redis 连接到 6379 失败
-
也许其他服务正在占用该端口? “docker ps”的结果是什么?
-
有3个容器和端口 0.0.0.0:80->5000/tcp ,0.0.0.0:6379->6379/tcp (redis container) ,0.0.0.0:27017->27017/tcp
-
您将使用
command覆盖redis 的默认CMD。如果您不弄乱用于启动容器的命令,它应该可以开箱即用。
标签: node.js mongodb docker redis docker-compose