This directory contains samples for Google Cloud Run. Cloud Run runs stateless containers on a fully managed environment or in your own GKE cluster.
Sample | Description | Deploy |
---|---|---|
Hello World | Quickstart | |
Cloud Pub/Sub | Handling Pub/Sub push messages | |
System Packages | Using system packages with containers | |
Image Magick | Event-driven image analysis & transformation | |
Manual Logging | Structured logging for Stackdriver | |
Local Troubleshooting | Broken services for local troubleshooting tutorial | |
Cloud SQL (MySQL) | Use MySQL with Cloud Run | |
Events - Pub/Sub | Events for Cloud Run with Pub/Sub | |
Anthos Events - Pub/Sub | Events for Cloud Run on Anthos with Pub/Sub | - |
Events - GCS | Events for Cloud Run with GCS | |
Anthos Events - GCS | Events for Cloud Run on Anthos with GCS | - |
Authentication | Make an authenticated request by retrieving a JSON Web Tokens (JWT) |
For more Cloud Run samples beyond Java, see the main list in the Cloud Run Samples repository.
These samples use Jib to build Docker images using common Java tools. Jib optimizes container builds without the need for a Dockerfile or having Docker installed. Learn more about how Jib works.
-
Clone this repository:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
In the samples's
pom.xml
, update the image field for thejib-maven-plugin
with your Google Cloud Project Id:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>2.0.0</version> <configuration> <to> <image>gcr.io/PROJECT_ID/SAMPLE_NAME</image> </to> </configuration> </plugin>
-
Build the sample container using Jib:
mvn compile jib:dockerBuild
-
Run containers locally by replacing
PROJECT_ID
andSAMPLE_NAME
with your values.With the built container:
PORT=8080 && docker run --rm -p 9090:${PORT} -e PORT=${PORT} gcr.io/PROJECT_ID/SAMPLE_NAME
Injecting your service account key for access to GCP services:
PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/[FILE_NAME].json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/[FILE_NAME].json:ro \ gcr.io/PROJECT_ID/SAMPLE_NAME
-
Use the --volume (-v) flag to inject the credential file into the container (assumes you have already set your
GOOGLE_APPLICATION_CREDENTIALS
environment variable on your machine) -
Use the --environment (-e) flag to set the
GOOGLE_APPLICATION_CREDENTIALS
variable inside the container
-
-
Open http://localhost:9090 in your browser.
Learn more about testing your container image locally.
-
Build the sample container using Jib:
mvn compile jib:build
Note: Using the image tag
gcr.io/PROJECT_ID/SAMPLE_NAME
automatically pushes the image to Google Container Registry. -
Deploy to Cloud Run by replacing
PROJECT_ID
andSAMPLE_NAME
with your values:gcloud run deploy --image gcr.io/PROJECT_ID/SAMPLE_NAME
-
See building containers and deploying container images for more information.
-
Dockerize a Spring Boot app without a Dockerfile using Jib.
-
To improve Tomcat startup time, add
-Djava.security.egd=file:/dev/./urandom
to the Dockerfile'sCMD
instructions. This is acceptable for many applications. However, if your application does it's own key generation, such as for SSL, and you require greater security, you may prefer to not setjava.security.egd
.