如何访问appengine flex实例上的公开端口?作为一个例子,我尝试在手动缩放的1实例项目上设置redis。我知道由于重启等原因,gae flex对redis来说并不合理,但我以此为例。
Dockerfile:
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
的app.yaml:
runtime: custom
env: flex
service: redis
manual_scaling:
instances: 1
network:
forwarded_ports:
- 6379
health_check:
enable_health_check: False
Docker镜像在本地运行良好。 部署工作正常,根据日志,似乎启动了redis服务器。 我现在希望能够通过redis-cli通过
访问已部署的redis服务器redis-cli -g <instanceid>-dot-<versionid>-dot-redis-<myproject>.appspot.com ping
但没有。不是来自外部,也不是来自项目内部(通过nodejs / redis)。较短的版本,没有instanceid或versionid也不起作用。
对于较短版本的网址,命令只会挂起。对于完整的URL,我得到“无法连接到Redis at ... nodename或servname提供,或者不知道”
我的端口转发配置错了吗? url格式应该根据https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed
工作我可以使用错误的instanceid吗?我使用控制台所说的id(也是日志中显示的内容)
答案 0 :(得分:2)
我在App Engine上工作。您真的不想使用App Engine尝试运行像redis这样的东西。 App Engine实际上是用于无状态HTTP服务。你应该避免这种情况有几个原因:
TL; DR:App Engine不太适合这种事情。我会考虑使用Redis Labs或使用redis image in the launcher。