Я создаю небольшое приложение, разделенное на 3 службы, используя докер. У меня есть служба redisjson, сервер узлов и приложение Python.
Я всегда запускаю redis внутри контейнера для разработки, на первых этапах я запускаю скрипт python и приложение узла изначально, которое я просто использовал для подключения к redis с помощью localhost.
Чтобы стандартизировать и развернуть среду, я настроил контейнеры для каждой службы, но в тот момент, когда я попытался подключиться к redis из других контейнеров, соединение отклоняется. Ниже мой файл компоновки, отступы могли быть пугающими во время копирования макаронных изделий, надеюсь, нет. Мне пришлось переключить порты с 6379 на 7000 для Redis, потому что это тоже доставляло мне проблемы с подключением.
version: '3.7'
networks:
app-tier:
driver: bridge
services:
redis:
image: 'redislabs/rejson:latest'
command: ["redis-server", "--bind", "redis", "--port", "6379", "--requirepass", "password"]
environment:
- appendonly
ports:
- '7000:6379'
volumes:
- redis:/data
networks:
- app-tier
node:
build: ./tickingServer
environment:
TZ: Europe/Rome
depends_on:
- redis
# - mariadb
links:
- "redis"
# - "mariadb"
ports:
- 3000:3000
restart: always
networks:
- app-tier
wsdaemon:
build: ./socketServer
environment:
TZ: Europe/Rome
depends_on:
- redis
links:
- "redis"
volumes:
- ./logs:/usr/src/websocketdaemon/logs
ports:
- 8000:8000
restart: always
networks:
- app-tier
volumes:
redis:
в моей системе как собственный порт, так и 7000 были бесплатными, и теперь они корректно используются докером-прокси. Согласно сети докеров, я использую в качестве имени хоста для соединения «redis», как я назвал службу так. Фрагмент тестирования соединения на Python выглядит следующим образом:
import log
import configuration
import redis
config = configuration.configuration()
logger = log.Log().get_logger(
__name__, config['logFolder'], config['logFormat'])
redis_client = redis.Redis(host='redis', port=7000, db=0, password='password')
коннектор nodejs выглядит так:
var Redis = require('ioredis');
var logger = require('../helpers/logHelper');
var JSONCache = require('redis-json');
let modName = "RedisConnector";
var redis = new Redis({
'host': 'redis',
'family': 4,
'db': 0,
'port': 7000,
'password': 'password'
});