Ошибка Docker-Compose с Kanban и Redis

пока я установил Kanban и Redis на свой сервер, операционная система которого - CentOS 7, у меня возникла проблема, которую я не могу понять. Это то, что я хочу сделать: я хочу иметь три контейнера докеров -> gitlab -> redis -> kanban. Когда я запускаю этот контейнер без docker-compose.yml, он отлично работает. Но я хочу запустить эти контейнеры из yml-файла. Итак, я написал этот файл:

version: '2'

services:
  gitlab:
    restart: always
    image: 'gitlab/gitlab-ce:latest'
    ports:
    - "80:80"
    - "443:443"
    - "10022:22"
    volumes:
    - /srv/gitlab/config:/etc/gitlab
    - /srv/gitlab/logs:/var/log/gitlab
    - /srv/gitlab/data:/var/opt/gitlab

  kanban_redis:
    restart: always
    image: 'leanlabs/redis:lastest'
    ports:
    - "6379:6379"

  kanban:
    restart: always
    image: "leanlabs/kanban:latest"
    ports:
    - "8080:80"
    links:
    - kanban_redis
    environment:
    - KANBAN_SERVER_HOSTNAME="http://localhost"
    - KANBAN_SERVER_LISTEN="0.0.0.0:80"
    - KANBAN_GITLAB_URL="http://mygitlab.com"
    - KANBAN_GITLAB_CLIENT="Application ID"
    - KANBAN_GITLAB_SECRET="Secret"
    - KANBAN_REDIS_ADDR="kanban_redis:6379"

Но когда я запускаю этот файл с помощью docker-compose up, я получаю эту ошибку:

kanban_1 | 2016/06/03 06:12:47 Ошибка подключения к redis dial tcp: неизвестный порт tcp / 6379 "kanban_1 вышел с кодом 1"

Gitlab и Redis запускаются нормально. У вас есть идея решить эту проблему?

Спасибо!


person Mira Mira    schedule 03.06.2016    source источник
comment
Ошибка имеет смысл, поскольку контейнер kanban_redis не запущен, вы получаете какие-либо ошибки для kanban_redis при запуске?   -  person Shibashis    schedule 03.06.2016


Ответы (2)


Я подозреваю, что вы столкнулись с состоянием гонки, когда ваш kanban_redis контейнер запущен, но еще не запущен redis.

Что вам нужно сделать, так это создать пользовательский запуск command для вашего kanban контейнера. В этой команде вы должны выполнить цикл, пока tcp:\\kanban_redis:6379 закрыт. После открытия запустите /kanban server. (см. этот пост о проверке портов TCP )

К сожалению, в настоящее время другого пути нет.

person Ant Kennedy    schedule 03.06.2016

Попробуйте depends_on. Может это поможет

kanban:
  depends_on:
  - kanban_redis
person Alexey Kuznetsov    schedule 03.06.2016