簡體   English   中英

在 gitlab ci 管道中,如何使用 python 連接到 redis 服務?

[英]In gitlab ci pipeline, how can I connect to redis service using python?

我的 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.

如果您使用的是 shell 執行程序,則根據評論和文檔,您必須在 gitlab 運行服務器上手動安裝 redis。

如果其他人有同樣的問題,我會在這里提出解決方案。

gitlab-ci.yml中的redis服務工作原理如下:

  1. Gitlab runner 在用戶鏡像中啟動redis-server。
  2. redis 服務器只能通過容器的 ip 地址連接(第一個,而不是分配的 docker)。
  3. 將上面提到的 ip 地址傳遞給 python 代碼(將“redis”替換為“$ip”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM