简体   繁体   中英

DNS resolver: failed to resolve host "redis", Failed to lookup address information: Name or service not known with Actix, Redis and Docker

I use Actix and Redis with Docker Compose.

Here is docker-compose.yaml :

version: "3.9"
services:
  web:
    image: actixblog
    ports:
      - "8080:8080"
    depends_on:
      redis_server:
        condition: service_started
    networks:
      - redis-net
  redis_server:
    image: redis:7.0.4
    networks:
      - redis-net
networks:
  redis-net:

I use a .env file on runtime, it gets copied on Docker image I have built. The environment variable is this:

REDIS_URL="redis://redis_server:6379"

However, I get this error while logging continuously:

web_1           | [2022-09-19][22:54:15][actixblog::db][DEBUG] Creating connection manager for redis...
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(1), interests=READABLE | WRITABLE
web_1           | [2022-09-19][22:54:15][actix_server::builder][INFO] Starting 4 workers
web_1           | [2022-09-19][22:54:15][actix_server::server][INFO] Actix runtime found; starting in Actix runtime
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] starting server worker 0
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(0), interests=READABLE | WRITABLE
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] starting server worker 1
web_1           | [2022-09-19][22:54:15][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] Service "actix-web-service-127.0.0.1:8080" is available
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(0), interests=READABLE | WRITABLE
web_1           | [2022-09-19][22:54:15][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] starting server worker 2
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] Service "actix-web-service-127.0.0.1:8080" is available
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(0), interests=READABLE | WRITABLE
web_1           | [2022-09-19][22:54:15][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] starting server worker 3
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] Service "actix-web-service-127.0.0.1:8080" is available
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(0), interests=READABLE | WRITABLE
web_1           | [2022-09-19][22:54:15][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:15][mio::poll][TRACE] registering event source with poller: token=Token(0), interests=READABLE
web_1           | [2022-09-19][22:54:15][actix_server::worker][TRACE] Service "actix-web-service-127.0.0.1:8080" is available
web_1           | [2022-09-19][22:54:15][actix_server::signals][TRACE] setting up OS signal listener
web_1           | [2022-09-19][22:54:15][tokio_util::codec::framed_impl][TRACE] flushing framed transport
web_1           | [2022-09-19][22:54:15][tokio_util::codec::framed_impl][TRACE] framed transport flushed
web_1           | [2022-09-19][22:54:18][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:18][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:18][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:18][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:18][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:18][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:18][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:18][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:19][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:19][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:19][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:19][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:22][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:22][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:22][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:22][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:22][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:22][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:22][actix_tls::connect::resolver][TRACE] DNS resolver: failed to resolve host "redis" err: Resolver(Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" })
web_1           | [2022-09-19][22:54:22][actix_redis::redis][ERROR] Can not connect to redis server: Failed to resolve hostname
web_1           | [2022-09-19][22:54:23][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:23][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:23][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"
web_1           | [2022-09-19][22:54:23][actix_tls::connect::resolver][TRACE] DNS resolver: resolving host "redis"

Why can't actix_tls resolve redis ?

Thanks in advance.


Environment

  • Rust 1.62.1
  • Actix Web 4.1.0
  • Docker 20.10.14

Seems like RedisActorSessionStore in actix-session does not accept Redis URL starting with redis:// for some reason.

# instead of this
redis://redis-server:6379

# use this
redis-server:6379

If you are getting your Redis URL from .env variable, and need to keep the redis:// part, you can replace string:

let redis_url = env::var("REDIS_URL")
    .expect("Could not get `REDIS_URL` envar.")
    .replace("redis://", "");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM