// cookbook/single-project-app/lib/service.dart (excerpt — real, apply-verified code)
GoogleCloudRunV2Service buildCloudRunService({
required GoogleServiceAccount runSa,
required GoogleSqlDatabaseInstance sqlInstance,
required GoogleSqlDatabase sqlDatabase,
required GoogleSecretManagerSecret dbPasswordSecret,
}) =>
GoogleCloudRunV2Service(
localName: 'coffee_service',
name: TfArg.literal('coffee-shop'),
location: TfArg.literal('asia-northeast1'),
ingress: TfArg.literal(Ingress.all),
deletionProtection: TfArg.literal(false),
template: CloudRunV2ServiceTemplate(
serviceAccount: TfArg.ref(runSa.email),
containers: [
CloudRunV2ServiceServiceContainer(
image: TfArg.literal(
'us-docker.pkg.dev/cloudrun/container/hello',
),
env: [
CloudRunV2ServiceEnvVar(
name: TfArg.literal('DB_INSTANCE'),
source: CloudRunV2ServiceEnvVarFromLiteral(
TfArg.ref(sqlInstance.connectionName),
),
),
CloudRunV2ServiceEnvVar(
name: TfArg.literal('DB_NAME'),
source: CloudRunV2ServiceEnvVarFromLiteral(
TfArg.ref(sqlDatabase.nameRef),
),
),
CloudRunV2ServiceEnvVar(
name: TfArg.literal('DB_USER'),
source: CloudRunV2ServiceEnvVarFromLiteral(
TfArg.literal('coffee_app'),
),
),
CloudRunV2ServiceEnvVar(
name: TfArg.literal('DB_PASSWORD'),
source: CloudRunV2ServiceEnvVarFromSecret(
secret: TfArg.ref(dbPasswordSecret.id),
version: TfArg.literal('latest'),
),
),
],
),
],
),
);