redis Docker - composer 和指挥官

ijxebb2r  于 2022-10-31  发布在  Redis
关注(0)|答案(3)|浏览(185)

我使用windows docker工具箱,我很困惑我缺少了什么。我想使用redis指挥官(https://www.npmjs.com/package/redis-commander)与一个docker图像redis从docker枢纽。
我使用了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服务器:本地:红色:6379:0
由于我使用的工具箱,我假设我必须把一些IP正确的组成文件。
单独使用redis和$ docker run --name some-redis -d redis
工作,我可以到达服务器下er本地:6379
但什么是REDIS_HOSTS=local:redis:6379
有什么帮助来正确设置吗?

aurhwmvo

aurhwmvo1#

我想你错过了链接你的两个容器。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
kognpnkq

kognpnkq2#

要修复这个问题,你需要像这样链接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:
k97glaaz

k97glaaz3#

REDIS_HOSTS=local:redis:6379表示它将创建配置文件以连接到 * 端口 * 6379上的 * 主机名 * redis的Docker容器,并将连接 * 名称 * 或 * 标签 * 设置为local
REDIS_HOSTS用于多个连接,用逗号分隔。REDIS_HOSTS有几种写法,如documentation中所述。
hostname
label:hostname
label:hostname:port
label:hostname:port:dbIndex
label:hostname:port:dbIndex:password
例如:假设您要为两个名为app1app2的应用程序使用redis。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
    build: .
    restart: always
    environment:
    - REDIS_HOSTS=local:redis:6379
    ports:
    - 8081:8081
    networks:
      - redis_network
networks:
  redis_network:
    driver: bridge

相关问题