Trong ứng dụng flask, tôi có một chức năng cố gắng tạo ứng dụng khách redis
db = redis.Redis(host='localhost', port=6379, decode_responses=True)
Khi quy trình bình của bạn chạy trong một vùng chứa, localhost
đề cập đến giao diện mạng của chính vùng chứa. Nó không giải quyết được giao diện mạng của máy chủ docker của bạn.
Vì vậy, bạn cần thay thế localhost
với địa chỉ IP của vùng chứa đang chạy redis.
Trong ngữ cảnh của tệp docker -omp.yml, điều này rất dễ dàng vì docker-comp sẽ làm cho các tên dịch vụ phân giải thành địa chỉ IP vùng chứa chính xác:
version: "3"
services:
my_flask_service:
image: ...
my_redis_service:
image: ...
thì trong ứng dụng bình của bạn, hãy sử dụng:
db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)