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/learn/106-cloudrun.md
Tihomir Jovicic 31714de4e3 Update Cloud Run docs
Signed-off-by: Tihomir Jovicic <tihomir.jovicic.develop@gmail.com>
2021-07-05 12:40:45 +02:00

2.4 KiB

slug
/learn/106-cloudrun

Dagger 106: deploy to Cloud Run

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 ran from the todoapp directory:

cd examples/todoapp

(optional) Initialize a Cue module

In this guide we 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 cue.mod/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' -m cue.mod/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 properly set, let's deploy on Cloud Run:

dagger up -e gcpcloudrun