2015-10-23 2 views
8

Я запускаю официальное изображение redis https://hub.docker.com/_/redis/ в настройке компоновки докеров.Вызов redis-cli в настройке докеры-компоновки

myredis: 
    image: redis 

Как можно запустить redis-cli с помощью docker-compose на этом изображении?
Я пробовал:

docker-compose run myredis redis-cli 

Но это обыкновение соединиться: Не удалось подключиться к Redis в 127.0.0.1:6379: Соединение отказаться

Документах на изображении говорят, что я должен работать:

docker run -it --link some-redis:redis --rm redis sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"' 

Как это перевести на docker-compose run?

ответ

17

Это будет отменено the default CMD [ "redis-server" ]: вы пытаетесь запустить redis-cli на контейнере, где redis-server так и не был выполнен.

As mentioned here, вы также можете проверить с:

docker exec -it myredis redis-cli 

От Докер-композе, как уже упоминалось in this docker/compose issue 2123:

rcli: 
    image: redis:latest 
    links: 
    - redis 
    command: > 
    sh -c 'redis-cli -h redis ' 

Это также работает:

rcli: 
    image: redis:latest 
    links: 
    - redis 
    command: redis-cli -h redis 

Поскольку OP ivoba подтверждает (in the comments), работает последняя форма.
Тогда:

docker-compose run rcli 

ivoba также добавляет:

docker-compose run redis redis-cli -h redis работает также, когда контейнеры работают.
Таким образом, нет необходимости объявлять отдельный контейнер rcli.

+0

Отлично! работает. Я взял последний подход и запустил его с помощью: docker-compose run rcli – ivoba

+0

@ivoba Отлично! Я включил ваш комментарий в ответ для большей наглядности. – VonC

+0

«Работа с док-станцией redis redis-cli -h redis» также работает, когда контейнеры работают. Таким образом, не обязательно объявлять отдельный контейнер rcli. – ivoba

2

Вы также можете использовать эту команду:

docker-compose run myredis redis-cli -h myredis 
+0

это уже сказано в ответе с разными именами – ivoba

Смежные вопросы