首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在云构建上运行DB迁移,使用私有IP连接到云sql

在云构建上运行DB迁移,使用私有IP连接到云sql
EN

Stack Overflow用户
提问于 2020-06-06 05:27:33
回答 2查看 2.4K关注 0票数 4

我正在尝试为云构建上的Nodejs应用程序设置db迁移,通过云sql代理通过私有IP连接到云sql。云SQL连接总是从云构建失败。

目前,我正在从计算引擎手动运行迁移。

我遵循这个步骤来设置构建步骤。在Google构建期间在Google上运行node.js数据库迁移

cloudbuild.yaml

代码语言:javascript
复制
steps:
  - name: node:12-slim
    args: ["npm", "install"]
    env:
      - "NODE_ENV=${_NODE_ENV}"
  - name: alpine:3.10
    entrypoint: sh
    args:
      - -c
      - "wget -O /workspace/cloud_sql_proxy https://storage.googleapis.com/cloudsql-proxy/v1.16/cloud_sql_proxy.linux.386 &&  chmod +x /workspace/cloud_sql_proxy"
  - name: node:12
    timeout: 100s
    entrypoint: sh
    args:
      - -c
      - "(/workspace/cloud_sql_proxy -dir=/workspace -instances=my-project-id:asia-south1:postgres-master=tcp:5432 & sleep 3) && npm run migrate"
    env:
      - "NODE_ENV=${_NODE_ENV}"
      - "DB_NAME=${_DB_NAME}"
      - "DB_PASS=${_DB_PASS}"
      - "DB_USER=${_DB_USER}"
      - "DB_HOST=${_DB_HOST}"
      - "DB_PORT=${_DB_PORT}"
  - name: "gcr.io/cloud-builders/gcloud"
    entrypoint: "bash"
    args:
      [
        "-c",
        "gcloud secrets versions access latest --secret=backend-api-env > credentials.yaml",
      ]
  - name: "gcr.io/cloud-builders/gcloud"
    args: ["app", "deploy", "--stop-previous-version", "-v", "$SHORT_SHA"]
timeout: "600s"

错误:

代码语言:javascript
复制
KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
Step #2:     at Client_PG.acquireConnection (/workspace/node_modules/knex/lib/client.js:349:26)

云构建角色:

代码语言:javascript
复制
Cloud Build Service Account
Cloud SQL Admin
Compute Network User
Service Account User
Secret Manager Secret Accessor
Serverless VPC Access Admin

云SQL管理API也是启用的。

版本:

代码语言:javascript
复制
NPM libs:
  "pg": "8.0.3"
  "knex": "0.21.1"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-10 15:27:19

Cloud特性使用托管在VPC网络中的内部IP地址,这些地址只能从同一VPC网络中的其他资源访问。

由于Cloud不支持,所以不可能从Cloud连接到Cloud实例的私有IP。

您可能需要查看有关此主题的官方Cloud文档,以选择另一个适合您的用例的替代方案。

票数 2
EN

Stack Overflow用户

发布于 2020-07-30 08:08:54

连接到公共云sql

我使用docker& cloud 代理

  1. 安装对接-组成云构建,这里
  2. 创建服务帐户(json文件)。
  3. 码头-撰写文件:

代码语言:javascript
复制
version: '3.7'

services: 
  app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: "no"
    links:
      - database
    tty: true
    volumes: 
      - app:/var/www/html
    env_file: 
      - ./.env
    depends_on: 
      - database
      

  database:
    image: gcr.io/cloudsql-docker/gce-proxy
    restart: on-failure
    command: 
      - "/cloud_sql_proxy" 
      - "-instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:3306" 
      - "-credential_file=/config/sql_proxy.json"
    volumes: 
      - ./sql_proxy.json:/config/sql_proxy.json:ro

volumes: 
  app:

  1. cloudbuild.yml

代码语言:javascript
复制
- name: 'gcr.io/$PROJECT_ID/docker-compose'
  id: Compose-build-cloudProxy
  args: ['build']

- name: 'gcr.io/$PROJECT_ID/docker-compose'
  id: Compose-up-cloudProxy
  args: ['up', '--timeout', '1', '--no-build', '-d']

- name: 'bash'
  id: Warm-up-cloudProxy
  args: ['sleep', '5s']

- name: 'gcr.io/cloud-builders/docker'
  id: Artisan-Migrate
  args: ['exec', '-i', 'workspace_app_1', 'php', 'artisan', 'migrate']

- name: 'gcr.io/$PROJECT_ID/docker-compose'
  id: Compose-down-cloudProxy
  args: ['down', '-v']

build-success.png

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62227723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档