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 |
For more Cloud Run samples beyond Java, see the main list in the Cloud Run Samples repository.
-
Clone this repository:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Note: Some samples in the list above are hosted in other repositories. They are noted with the symbol "➥".
-
export SAMPLE=<SAMPLE_NAME> cd $SAMPLE docker build --tag $SAMPLE .
-
With the built container:
PORT=8080 && docker run --rm -p 8080:${PORT} -e PORT=${PORT} $SAMPLE
Overriding the built container with local code:
PORT=8080 && docker run --rm \ -p 8080:${PORT} -e PORT=${PORT} \ -v $PWD:/app $SAMPLE
Injecting your service account key for access to GCP services:
# Set the name of the service account key within the container export SA_KEY_NAME=my-key-name-123 PORT=8080 && docker run --rm \ -p 8080:${PORT} \ -e PORT=${PORT} \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/${SA_KEY_NAME}.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/${SA_KEY_NAME}.json:ro \ -v $PWD:/app $SAMPLE
-
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
-
Learn more about testing your container image locally.
- Set your GCP Project ID as an environment variable:
export GOOGLE_CLOUD_PROJECT=<PROJECT_ID>
- Choose to push your image to Google Container Registry or submit a build to Cloud Build:
- Push the docker build to Google Container Registry:
docker tag $SAMPLE gcr.io/${GOOGLE_CLOUD_PROJECT}/${SAMPLE}
docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/${SAMPLE}
Learn more about pushing and pulling images.
- Submit a build using Google Cloud Build:
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/${SAMPLE}
- Deploy to Cloud Run:
gcloud beta run deploy $SAMPLE \
--set-env-vars GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--image gcr.io/${GOOGLE_CLOUD_PROJECT}/${SAMPLE}
-
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
.