docker-compose redis 和 redis Commander

问题描述 投票:0回答:4

我使用 Windows docker 工具箱,我很困惑我缺少什么。我想将 redis Commander (https://www.npmjs.com/package/redis-commander) 与来自 docker hub 的 docker 镜像 redis 一起使用。

我使用了上面链接中的 docker-compose.yml:

version: '3'
services:
  redis:
    container_name: redis
    hostname: redis
    image: redis

  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    build: .
    restart: always
    environment:
    - REDIS_HOSTS=local:redis:6379
    ports:
    - 8081:8081

现在我可以使用端口 8081 上的工具箱 IP 启动应用程序 它说未定义的redis服务器:本地:redis:6379:0

由于我使用的是工具箱,我假设我必须在撰写文件中放置一些正确的 IP。

单独使用redis

$ docker run --name some-redis -d redis

工作正常,我可以到达本地的服务器:6379

但是这意味着什么

REDIS_HOSTS=local:redis:6379

有什么帮助可以正确设置吗?

docker redis docker-compose
4个回答
2
投票

要修复此问题,您需要像这样链接 redis 和 redis-commander:

version: "3.9"

services:
  redis:
    image: redis:6.2.5
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - redis:/var/lib/redis
      - redis-config:/usr/local/etc/redis/redis.conf
    ports:
      - ${REDIS_PORT}:6379
    networks:
      - redis-network

  redis-commander:
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
      REDIS_HOSTS: redis
      REDIS_HOST: redis
      REDIS_PORT: redis:6379
      REDIS_PASSWORD: ${REDIS_PASSWORD}
      HTTP_USER: root
      HTTP_PASSWORD: root
    ports:
      - 8081:8081
    networks:
      - redis-network

volumes:
  redis:
  redis-config:

networks:
  redis-network:
    driver: bridge

或者那个:

version: "3.9"

services:
  redis:
    image: redis:6.2.5
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - redis:/var/lib/redis
      - redis-config:/usr/local/etc/redis/redis.conf
    ports:
      - ${REDIS_PORT}:6379
    links:
      - redis-commander

  redis-commander:
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
      REDIS_HOSTS: redis
      REDIS_HOST: redis
      REDIS_PORT: redis:6379
      REDIS_PASSWORD: ${REDIS_PASSWORD}
      HTTP_USER: root
      HTTP_PASSWORD: root
    ports:
      - 8081:8081

volumes:
  redis:
  redis-config:

1
投票

我认为您错过了链接 2 个容器。 redis 容器需要端口 + 链接,并且 redis-commander 需要正确的环境。 您只能使用链接/环境的容器名称。

version: '3'
services:
  redis:
    container_name: redis
    hostname: redis
    image: redis
    ports:
        - "6379:6379"
    links: redis-commander

  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    build: .
    restart: always
    environment:
        - REDIS_HOSTS=redis
    ports:
        - "8081:8081"

0
投票

我编写了以下代码并且它有效

redis:
  container_name: ${PROJECT_NAME}-redis
  image: redis:alpine
  hostname: ${REDIS_HOST}
  command: redis-server --requirepass ${REDIS_PASSWORD} --bind 0.0.0.0
  environment:
    - REDIS_PASSWORD=${REDIS_PASSWORD}
    - REDIS_PORT=${REDIS_PORT}
  ports:
    - ${REDIS_PORT}:${REDIS_PORT}
  volumes:
    - redis:/data
  networks:
    - sample_network
  restart: unless-stopped

redis-commander:
  container_name: ${PROJECT_NAME}-redis-commander
  image: rediscommander/redis-commander:latest
  hostname: ${REDIS_COMMANDER_HOST}
  depends_on:
    - redis
  environment:
    - REDIS_HOST=${REDIS_HOST}
    - REDIS_PORT=${REDIS_PORT}
    - REDIS_PASSWORD=${REDIS_PASSWORD}
    - HTTP_USER=${REDIS_COMMANDER_USER}
    - HTTP_PASSWORD=${REDIS_COMMANDER_PASS}
  ports:
    - "8081:8081"
  networks:
    - sample_network
  restart: unless-stopped

别忘了安定

volumes:
  redis:
    driver: local
    name: ${PROJECT_NAME}_redis

0
投票

REDIS_HOSTS=local:redis:6379
意味着它将创建配置文件以连接到 port
redis
上的 hostname
6379
的 docker 容器,并将连接 namelabel 作为
local

当你想要有多个连接时使用

REDIS_HOSTS
,用逗号分隔。 如
文档
中所述,有一些书写 REDIS_HOSTS 的方法。

hostname

label:hostname

label:hostname:port

label:hostname:port:dbIndex

label:hostname:port:dbIndex:password

示例: 假设您想将 Redis 用于两个名为

app1
app2
的应用程序。
app1
的数据库索引为 1,
app2
的数据库索引为 2。
REDIS_HOSTS
看起来像:

REDIS_HOSTS=app1:redis:6379:1,app2:redis:6379:2

您可以使用的工作 docker-compose.yml(添加网络):

version: '3'
services:
  redis:
    container_name: redis
    hostname: redis
    image: redis
    networks:
      - redis_network

  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    restart: always
    environment:
    - REDIS_HOSTS=local:redis:6379
    ports:
    - 8081:8081
    networks:
      - redis_network
networks:
  redis_network:
    driver: bridge

© www.soinside.com 2019 - 2024. All rights reserved.