【问题标题】:Unable to connect Django docker image to GCP instance using GCloud Proxy无法使用 GCloud 代理将 Django docker 映像连接到 GCP 实例
【发布时间】:2020-12-25 19:33:23
【问题描述】:

我正在使用 cloud_proxy 连接到谷歌云 postgres 实例。我按照 GCP 网站https://cloud.google.com/sql/docs/postgres/connect-admin-proxy 中的步骤进行操作。当我使用 python manage.py runserver 在本地运行它时,db 的主机为 127.0.0.1,端口为 5432,程序运行正常。

如果我尝试 dockerize 应用程序并运行程序,我将面临错误

无法连接到服务器:连接被拒绝 服务器是否在主机“localhost”(127.0.0.1)上运行并接受 端口 5432 上的 TCP/IP 连接?

Docker 文件

服务: 网络: 建造: 。 命令:python manage.py runserver

volumes:
  - .:/code
ports:
  - 8000:8000

所以我尝试使用堆栈溢出答案Is there a way to access google cloud SQL via proxy inside docker container dockerize 应用程序,也修改了 settings.py 文件中的主机。

现在面临错误 gcloud 不在路径中,并且 -instances 和 -projects 为空

服务:

网络:

build: .
command: python manage.py runserver
depends_on:
  - cloud-sql-proxy
volumes:
  - .:/code
ports:
  - 8000:8000
env_file:
  - ./.env.dev

云-sql-代理:

image: gcr.io/cloudsql-docker/gce-proxy:1.16

command: /cloud_sql_proxy --dir=/cloudsql instances=abc:us-central1:def=tcp:0.0.0.0:5432 -credential_file=/secrets/cloudsql/credentials.json

ports:
  - 5432:5432

volumes:
  - credentials.json:/secrets/cloudsql/credentials.json

restart: always

你能帮我解决这个问题吗?我的要求是使用 Django 应用程序创建一个 docker 映像,以便可以将其部署到 GCP。

【问题讨论】:

  • 如果您觉得我的回答有用,请考虑点赞/接受,谢谢!

标签: django docker google-cloud-platform docker-compose


【解决方案1】:

我觉得你少了-应该是

command: /cloud_sql_proxy --dir=/cloudsql -instances=abc:us-central1:def=tcp:0.0.0.0:5432 -credential_file=/secrets/cloudsql/credentials.json

【讨论】:

    【解决方案2】:

    我建议您遵循下一个文档:

    Connecting psql client using the Cloud SQL Proxy docker Image

    本页介绍了如何使用 Cloud SQL Proxy Docker 映像从运行 Linux 或 Compute Engine Linux 实例的客户端计算机将 psql 客户端连接到您的 Cloud SQL 实例,我认为本指南可以满足您的需求。

    本指南在第 9 点提到了启动代理的方式。 Unix 套接字:

    docker run -d -v /cloudsql:/cloudsql \
      -v <PATH_TO_KEY_FILE>:/config \
      gcr.io/cloudsql-docker/gce-proxy:1.16 /cloud_sql_proxy -dir=/cloudsql \
      -instances=<INSTANCE_CONNECTION_NAME> -credential_file=/config
    

    如果您使用 Compute Engine 实例提供的凭据,请不要包含 credential_file 参数和 -v &lt;PATH_TO_KEY_FILE&gt;:/config 行。 如果您使用的是容器优化镜像,请使用可写目录代替/cloudsql,例如:

    -v /mnt/stateful_partition/cloudsql:/cloudsql
    

    另外,如果您想了解有关 Cloud SQL 代理参数和标志的更多信息,我建议您查看page

    希望这些信息对你有用

    【讨论】:

      猜你喜欢
      • 2021-07-21
      • 2022-07-26
      • 2020-10-02
      • 2019-09-05
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多