【发布时间】:2020-07-08 10:29:38
【问题描述】:
我正在使用 Postgres、Redis 和 Node.js(使用 yarn 添加依赖项),并尝试将它们与 docker-compose.yml 文件集成。
我有以下 docker-compose.yml:
version: '3'
services:
postgres:
image: postgres:latest
restart: unless-stopped
environment:
- POSTGRES_DB=mybase
- POSTGRES_USER=myuser
- POSTGRES_PASSWORD=mypass
redis:
image: redis:latest
restart: unless-stopped
migrate:
build: .
entrypoint: node_modules/.bin/sequelize db:migrate --config src/config/database.js --migrations-path src/database/migrations/
volumes:
- ./:/app
- /app/node_modules
depends_on:
- postgres
wavetech-be:
build:
dockerfile: Dockerfile
context: .
restart: on-failure
volumes:
- /app/node_modules
- ./:/app
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- DB_HOST=postgres
- DB_USER=myuser
- DB_PASS=mypass
- DB_PORT=5432
- DB_NAME=mybase
depends_on:
- redis
- migrate
还有以下 Dockerfile:
FROM node:alpine
WORKDIR "/app"
COPY ./package.json ./
RUN apk add yarn
RUN yarn
COPY . .
CMD [ "yarn", "dev" ]
但是,当我 docker-compose up 时,我不断遇到两个数据库的连接问题:
migrate_1 |
migrate_1 | ERROR: connect ECONNREFUSED 127.0.0.1:5432
migrate_1 |
...
wavetech-be_1 | (node:85) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:6379
【问题讨论】:
-
您似乎没有告诉
migrate在哪里可以找到数据库。比较您为wavetech-be设置的环境,它实际上告诉它在哪里查找。 -
真的!太感谢了!您为迁移做好了准备!这是一个问题。不过,对 redis 服务有什么想法吗?
-
它似乎没有使用
REDIS_HOST,它仍在尝试连接127.0.0.1。 -
@jonrsharpe 我设法找出问题所在:我将 Bull 与我的 Redis 服务器一起使用,即使我通过 redisConfig 导入传递 process.env 变量,它也只能正常工作当我将 process.env 变量直接传递到 Bull 的配置中时。你帮了我很多,伙计。如果你想添加一个正式的答案,我很乐意接受!非常感谢!
-
卢卡斯,如果您找到答案,请使用下面的“发布您的答案”按钮。在这里完全感谢您回答您自己的问题。我们会将这个问题从未回答的问题列表中删除。
标签: postgresql docker redis docker-compose dockerfile