This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/docs/1006-google-cloud-run.md
Solomon Hykes 57754bebb8 "kb style" docs: decouple URLs from structure
Signed-off-by: Solomon Hykes <solomon@dagger.io>
2021-07-16 19:08:18 +02:00

2.4 KiB

slug
/1006/google-cloud-run/

Deploy to Google Cloud Run with Dagger

This tutorial illustrates how to use Dagger to build, push and deploy Docker images to Cloud Run.

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

Initialize a Dagger Workspace and Environment

(optional) Setup example app

You will need the local copy of the Dagger examples repository used in previous guides

git clone https://github.com/dagger/examples

Make sure that all commands are being run from the todoapp directory:

cd examples/todoapp

(optional) Initialize a Cue module

This guide will use the same directory as the root of the Dagger workspace and the root of the Cue module, but you can create your Cue module anywhere inside the Dagger workspace.

cue mod init

Organize your package

Let's create a new directory for our Cue package:

mkdir gcpcloudrun

Create a basic plan

package gcpcloudrun

import (
    "alpha.dagger.io/dagger"
    "alpha.dagger.io/docker"
    "alpha.dagger.io/gcp"
    "alpha.dagger.io/gcp/cloudrun"
    "alpha.dagger.io/gcp/gcr"
)

// Source code of the sample application
src: dagger.#Artifact & dagger.#Input

// GCR full image name
imageRef: string & dagger.#Input

image: docker.#Build & {
    source: src
}

gcpConfig: gcp.#Config

creds: gcr.#Credentials & {
    config: gcpConfig
}

push: docker.#Push & {
    target: imageRef
    source: image
    auth: {
        username: creds.username
        secret: creds.secret
    }
}

deploy: cloudrun.#Service & {
    config: gcpConfig
    image:  push.ref
}

Set up the environment

Create a new environment

Now that your Cue package is ready, let's create an environment to run it:

dagger new 'gcpcloudrun' -p ./gcpcloudrun

Configure user inputs

dagger input dir src . -e gcpcloudrun
dagger input text deploy.name todoapp -e gcpcloudrun
dagger input text imageRef gcr.io/<your-project>/todoapp -e gcpcloudrun
dagger input text gcpConfig.region us-west2 -e gcpcloudrun
dagger input text gcpConfig.project <your-project> -e gcpcloudrun
dagger input secret gcpConfig.serviceKey -f ./gcp-sa-key.json -e gcpcloudrun

Deploy

Now that everything is set correctly, let's deploy on Cloud Run:

dagger up -e gcpcloudrun