Ответ состоит из двух частей:
Во-первых, как указывал @jonrsharpe, в описании службы переноса отсутствовали переменные окружения . Итак, как и в случае с томами, для каждой службы требуются свои собственные переменные среды.
migrate:
build: .
entrypoint: node_modules/.bin/sequelize db:migrate --config src/config/database.js --migrations-path src/database/migrations/
volumes:
- ./:/app
- /app/node_modules
environment:
- DB_HOST=postgres
- DB_USER=myuser
- DB_PASS=mypass
- DB_PORT=5432
- DB_NAME=mybase
- APP_PORT=3000
depends_on:
- postgres
Во-вторых, я использую Bull для управления моим сервером Redis. Я импортировал конфигурацию и передал ее непосредственно в Redis, поэтому:
import redisConfig from '../../config/redis';
...
init() {
this.queues = Object.values(jobs).map(job => ({
bull: new BullQueue(job.key, redisConfig),
name: job.key,
handle: job.handle,
}));
}
И оказалось, что Bull пытался просто использовать конфигурацию Redis по умолчанию. Когда я передавал переменные среды непосредственно в конфигурацию Bull, она работала правильно:
init() {
this.queues = Object.values(jobs).map(job => ({
bull: new BullQueue(job.key, {
redis: {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
},
}),
name: job.key,
handle: job.handle,
}));
}