在 Docker Compose 中更改 Redis 端口不起作用

nid*_*kil 9 redis docker docker-compose

我有一个 Docker Compose 文件,它启动两个服务:Redis 和 Redis Commander。使用默认的 Redis 端口 6379 可以正常工作。将Redis端口更改为6380Redis Commander后,无法再连接到Redis。

错误:

setUpConnection Redis error Error: connect ECONNREFUSED 172.19.0.2:6380
Run Code Online (Sandbox Code Playgroud)

这是docker-compose.yml文件:

version: '3.7'
services:
  redis:
    container_name: redis
    hostname: redis
    image: sameersbn/redis:4.0.9-2
    ports:
      - "6380:6379"
    expose:
      - "6380"
    volumes:
      - type: volume
        source: redis-data
        target: /data
    restart: always
  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
      - REDIS_HOSTS=local:redis:6380
    ports:
      - "8082:8081"
volumes:
  redis-data: {}
Run Code Online (Sandbox Code Playgroud)

我可以6380使用以下节点代码在端口上连接到 Redis :

import redis from 'redis'

const config = {
  host: '127.0.0.1',
  port: 6380,
  no_ready_check: true
}

const client = redis.createClient(config.port, config.host)

client.set('expireName', 'nidkil', (err, reply) => {
  if (err) {
    console.error('Error occurred:', err)
  } else {
    console.log('Response:', reply)
  }
})
Run Code Online (Sandbox Code Playgroud)

如果我更改端口回6379docker-compose.yml随后Redis的指挥官可以连接。

有什么建议可以让 Redis Commander 在端口上连接到 Redis 6380

nid*_*kil 17

@Mihai 的回答帮助我找到了解决方案。我需要更改运行 Redis 的端口以及暴露的端口。这是工作的 Docker 撰写文件。

version: '3.7'
services:
  redis:
    container_name: redis
    hostname: redis
    image: sameersbn/redis:4.0.9-2
    command: --port 6380
    ports:
      - "6380:6380"
    expose:
      - "6380"
    volumes:
      - type: volume
        source: redis-data
        target: /data
    restart: always
  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
      - REDIS_HOSTS=local:redis:6380
    ports:
      - "8082:8081"
volumes:
  redis-data: {}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。我只需添加命令“--port 6379”,它甚至可以使用官方“redis”映像。 (4认同)
  • 我就是这么回复的。做得好!我认为您也可以仅自定义“命令:--port 6380”而不是整个入口点。在我看来会更好。 (3认同)

Mih*_*hai 6

您更改了主机上公开的端口。您没有更改容器中的内部端口。您的 Redis 实例继续在默认端口 (6379) 上运行。

该语句也expose: - "6380"可以省略,因为它没有用。