복붙노트

[REDIS] 로컬 호스트에 연결 오류 99 : 6379. 수 할당 요청한 주소

REDIS

로컬 호스트에 연결 오류 99 : 6379. 수 할당 요청한 주소

설정: 나는 가상 머신을 가지고 세 가지 용기 (AN의 nginx 프록시, 아주 최소한의 플라스크 응용 프로그램 및 레디 스)를 실행하는 가상 머신이다. 플라스크는 6379에 레디 스 동안 포트 5000에 제공해야한다.

이러한 컨테이너 각각 최대와 잘 같은 고독한 서비스를 독립 실행하지만 서비스로 고정 표시기의 작성을 통해도 가능합니다.

플라스크 응용 프로그램에서 내 목표는 어떤 키 레디 스 및 쿼리에 연결하는 것입니다.

Nginx의 용기 포트 80 플라스크 포트 5000 노출 포트 6379를 레디 스.

플라스크 응용 프로그램에서 나는 시도는 레디 스 클라이언트를 생성하는 기능을 가지고

db = redis.Redis(host='localhost', port=6379, decode_responses=True)

나는 포트를 사용 할 수없는 오류를 얻고있다 플라스크 응용 프로그램을 실행

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

나는이 문제의 원인이 될 수있는 것을 명확성의 손실하고, 어떤 아이디어 감상 할 수있다.

해결법

  1. ==============================

    1.용기에 플라스크 프로세스가 실행되면 로컬 호스트는 컨테이너 자체의 네트워크 인터페이스를 의미합니다. 그것은 당신의 고정 표시기 호스트의 네트워크 인터페이스에 해결되지 않습니다.

    용기에 플라스크 프로세스가 실행되면 로컬 호스트는 컨테이너 자체의 네트워크 인터페이스를 의미합니다. 그것은 당신의 고정 표시기 호스트의 네트워크 인터페이스에 해결되지 않습니다.

    당신은 컨테이너 실행 레디 스의 IP 주소로 localhost를 교체 할 필요가 그래서.

    고정 표시기 - compose.yml 파일의 맥락에서,이 올바른 컨테이너 IP 주소로 서비스 이름의 결의를 만들 것입니다 고정 표시기-작성으로 쉽게 :

    version: "3"
    services:
      my_flask_service:
        image: ...
      my_redis_service:
        image: ...
    

    다음 플라스크 응용 프로그램에서 사용 :

    db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)
    
  2. ==============================

    2.나는 원격이었고, 내 부두 노동자 호스트에 SSH 터널을 통해 매핑 액세스 내 컨테이너를 원하는 서비스를 제외하고,이 같은 문제가 없었다. 즉, 내 코드를 찾을 수에 대한 고정 표시기-작성 서비스가 없었다. 나는 명시 적으로 문자열로 내 로컬 호스트를 찾기 위해 레디 스를 이야기하여 문제를 해결 :

    나는 원격이었고, 내 부두 노동자 호스트에 SSH 터널을 통해 매핑 액세스 내 컨테이너를 원하는 서비스를 제외하고,이 같은 문제가 없었다. 즉, 내 코드를 찾을 수에 대한 고정 표시기-작성 서비스가 없었다. 나는 명시 적으로 문자열로 내 로컬 호스트를 찾기 위해 레디 스를 이야기하여 문제를 해결 :

    pyredis.Redis(host='docker.for.mac.localhost', port=6379)
    
  3. from https://stackoverflow.com/questions/54965291/error-99-connecting-to-localhost6379-cannot-assign-requested-address by cc-by-sa and MIT license