google-cloud-platform - 从本地 Cloud Run Emulator 连接到在 Docker (Redis) 中运行的容器

标签 google-cloud-platform redis google-cloud-run google-cloud-code google-cloud-intellij

我正在使用 Intellij (PyCharm) 的 Cloud Code 插件创建本地云运行服务,但本地部署的服务无法连接到 Docker 中运行的 redis 实例:

redis.exceptions.ConnectionError: Error 111 connecting to 127.0.0.1:6379. Connection refused.

我可以从 python shell 连接到本地运行的 redis 实例,只是 minikube/docker 中运行的云运行服务似乎无法连接到它。

有什么想法吗?

编辑,因为人们建议完全不相关的帖子 - 本地运行的 Cloud Run 实例使用 Docker 和 Minikube 来运行,并由 Cloud Code for Intellij 自动配置。我怀疑 Intellij 的 Cloud Code 将 Cloud Run 实例置于无法访问 MacOS 本地主机上运行的服务(但可以访问互联网)的环境中,这就是我在帖子中标记这些特定项目的原因。请将建议限制为考虑到这些项目的建议。

最佳答案

如果您使用以下命令检查 Docker 网络:

docker network list

您将看到一个名为 cloud-run-dev-internal 的网络。您需要将 Redis 容器连接到该网络。为此,请运行以下命令(此说明假设您的容器名称为 some-redis):

docker network connect cloud-run-dev-internal some-redis

仔细检查您的容器是否已连接到网络:

docker network inspect cloud-run-dev-internal

然后使用容器名称连接到 Redis 主机:

import redis
...

redis_host = os.environ.get('REDISHOST', 'some-redis')
redis_port = int(os.environ.get('REDISPORT', 6379))
redis_client = redis.StrictRedis(host=redis_host, port=redis_port)

关于google-cloud-platform - 从本地 Cloud Run Emulator 连接到在 Docker (Redis) 中运行的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66267954/

相关文章:

redis - 获取 "keypattern*"在 Redis 集群中不起作用

node.js - 带有 kue 的 NodeJS 应用程序从不从 0 开始

google-cloud-platform - 使用 'gcloud run deploy' 时,如何使用命令行参数指定服务名称?

google-cloud-platform - 如何利用多个 Google Cloud TPU 训练单个模型

python - 如何将参数传递给部署在 Google App Engine 上的 python 脚本?

github - 如何为多个 Google Cloud Functions 设置一个 GitHub 存储库?

laravel - 我需要 Node.js 服务器和 Laravel Echo 服务器吗?

google-cloud-platform - 通过 ESPv2 : Problem with timeout 的谷歌云功能 + 端点

google-cloud-platform - GCP 端点 : The caller does not have permission after requesting API key in query