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

jk9hmnmh  于 2023-04-29  发布在  Redis
关注(0)|答案(3)|浏览(455)

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

setUpConnection Redis error Error: connect ECONNREFUSED 172.19.0.2:6380

下面是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: {}

我可以通过6380端口连接Redis,使用以下Node代码:

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)
  }
})

如果我在docker-compose.yml中将端口改回6379,那么Redis Commander就可以连接了。
如何让Redis Commander连接到Redis的6380端口?

czq61nw1

czq61nw11#

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

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: {}
l7wslrjt

l7wslrjt2#

您更改了主机上公开的端口。您没有更改容器中的内部端口。您的redis示例继续在默认端口(6379)上运行。
这个语句expose: - "6380"也可以省略,因为它没有用。

kfgdxczn

kfgdxczn3#

port forwarding命令将主机上的端口Map到docker容器上的端口。请注意,左侧的端口:是指主机上的端口,在本例中为6380,但主机上的Redis运行在端口6380上。默认情况下,容器上的redis将在端口6379上运行。要在所需端口上运行它,应使用命令**--port**〈<port_number>〉。

相关问题