В gitlab ci pipe, как я могу подключиться к сервису redis, используя python? - PullRequest
0 голосов
/ 15 апреля 2020

Мой gitlab-ci.yml выглядит так:

stage: functional_test
  only:
    - develop
    - master
    - merge_requests
  services:
    - redis:latest
    - docker:18.06.2-dind
  variables:
    PHOTON_ENV: development
    DOCKER_HOST: tcp://localhost:2375
    REDIS_HOST: redis
    REDIS_URL: redis://redis:6379/0

И мой python код для подключения Redis выглядит так:

self._redis = redis.Redis(host=_host,
                          port=_port,
                          db=_db,
                          decode_responses=True)

_host = 'redis'
_port = 6379
_db = 0

Однако каждый раз, когда я пытаюсь этот код, эта ошибка будет отображаться:

      File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 772, in execute_command
403     connection = pool.get_connection(command_name, **options)
404   File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 994, in get_connection
405     connection.connect()
406   File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 497, in connect
407     raise ConnectionError(self._error_message(e))
408 redis.exceptions.ConnectionError: Error -2 connecting to redis:6379. Name or service not known.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Я выкладываю здесь решение, если у кого-то еще есть такая же проблема.

Служба redis в gitlab-ci.yml работает следующим образом:

  1. Средство запуска Gitlab запускает сервер redis в образе пользователя.
  2. Сервер redis может подключаться только по ip-адресу вашего контейнера (первый, не назначенный docker).
  3. Передать упомянутый выше ip-адрес в код python (замените «redis» на «$ ip» ")
0 голосов
/ 15 апреля 2020

Исходя из комментариев и в соответствии с документацией вы должны вручную установить redis на ваш сервер gitlab runner, если вы используете executor.

...