🍣

VSCodeでCloud Runに簡単にデプロイする

2023/07/04に公開
1

goのアプリをVSCodeからCloud Runに簡単にデプロイする方法について説明します。

Artifact Registryへの登録も、yamlファイルを書く必要もありません。Dockerfileさえあれば、簡単にデプロイすることができます。

データベースの操作で、Cloud SQL Proxyも使用します。

コード

INSTANCE_CONNECTION_NAME は project:region:instance-id 形式を使用します。

https://cloud.google.com/sql/docs/postgres/connect-run?hl=ja#go

package cloudsql

import (
        "database/sql"
        "fmt"
        "log"
        "os"

        // Note: If connecting using the App Engine Flex Go runtime, use
        // "github.com/jackc/pgx/stdlib" instead, since v4 requires
        // Go modules which are not supported by App Engine Flex.
        _ "github.com/jackc/pgx/v4/stdlib"
)

// connectUnixSocket initializes a Unix socket connection pool for
// a Cloud SQL instance of Postgres.
func connectUnixSocket() (*sql.DB, error) {
        mustGetenv := func(k string) string {
                v := os.Getenv(k)
                if v == "" {
                        log.Fatalf("Fatal Error in connect_unix.go: %s environment variable not set.\n", k)
                }
                return v
        }
        // Note: Saving credentials in environment variables is convenient, but not
        // secure - consider a more secure solution such as
        // Cloud Secret Manager (https://cloud.google.com/secret-manager) to help
        // keep secrets safe.
        var (
                dbUser         = mustGetenv("DB_USER")              // e.g. 'my-db-user'
                dbPwd          = mustGetenv("DB_PASS")              // e.g. 'my-db-password'
                unixSocketPath = mustGetenv("INSTANCE_UNIX_SOCKET") // e.g. '/cloudsql/project:region:instance'
                dbName         = mustGetenv("DB_NAME")              // e.g. 'my-database'
        )

        dbURI := fmt.Sprintf("user=%s password=%s database=%s host=%s",
                dbUser, dbPwd, dbName, unixSocketPath)

        // dbPool is the pool of database connections.
        dbPool, err := sql.Open("pgx", dbURI)
        if err != nil {
                return nil, fmt.Errorf("sql.Open: %v", err)
        }

        // ...

        return dbPool, nil
}

Google Cloud Codeインストール

VSCodeの「Google Cloud Code」拡張機能をインストールします。

Google Cloud SDKにログイン

  1. サイドバーのGoogle Cloud Codeのアイコンをクリック
  2. Login to Google Cloud SDKをクリックして認証
  3. プロジェクトを選択

Cloud Runにデプロイ

  1. Deploy to Cloud Runをクリック

  2. Advanced Settingsでcloud-sql-proxyの設定をする

    Cloud SQL connectionsの欄に、cloud sqlの接続名を入力する

  3. デプロイする

    yamlファイルは自動で作成され、イメージはCONTAINER REGISTRYに作成されます。

Discussion

Daisuke YamamotoDaisuke Yamamoto

次は、GitHub への Push を Trigger に自動デプロイされるよう設定しましょう。