我正在尝试使用 cloudsql-proxy docker 容器将应用程序(docker 容器)连接到 Google Cloud SQL 数据库。因此,我使用以下 cloudsql-proxy 容器创建了一个 docker-compose 文件:(XXX 替换为我的云 sql 实例 ID)
version: "3"
volumes:
sqlproxy:
services:
cloudsql-proxy:
container_name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: /cloud_sql_proxy --dir=/cloudsql -instances=XXX=tcp:0.0.0.0:3306 -credential_file=/config/credentials.json
ports:
- "3306:3306"
volumes:
- /usr/share/service-accounts/cloudsql-client.json:/config/credentials.json
- sqlproxy:/cloudsql
- /etc/ssl/certs:/etc/ssl/certs
restart: always
Run Code Online (Sandbox Code Playgroud)
每当我尝试从同一台机器上运行的另一个容器(例如 docker-compose 文件中的第二个容器)连接到 cloudsql mysql 数据库时,我都会收到错误消息
“错误 2003 (HY000):无法连接到 '127.0.0.1' 上的 MySQL 服务器(111“连接被拒绝”)”
我尝试使用三种不同的方法连接到 cloudsql-proxy,但仍然出现相同的错误。所有容器(要连接的云 sql 代理和测试容器)都在一个 google 计算引擎实例上:
a) mysql-client: mysql --host 127.0.0.1
b) jdbc url: jdbc:mysql://127.0.0.1:3306/test
c) jdbc url: jdbc:mysql://cloudsql-proxy:3306/test
在我的 gc 防火墙中,为了测试目的,我为 0.0.0.0/0 …
我登录到 AWS ECR 存储库并触发了 pull 命令,但出现了此错误
# $(aws ecr get-login --no-include-email)
Login Succeeded
# docker pull 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1
Pulling repository 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1
unauthorized: authentication required
Run Code Online (Sandbox Code Playgroud) Microsoft Orleans 框架提供了一种无需太多复杂性即可构建分布式、大规模系统的方法。
缩放对于奥尔良来说是很自然的;如果主机出现故障,则该主机上的活动谷物会在其他地方重新激活,因为它们的状态会保留在存储中。
考虑到这一点,Docker 等容器服务如何应用于生产中的 Orleans 应用程序?如果 Orleans 默认情况下已经可以扩展,为什么我们需要一个精心设计的容器服务来进行扩展?