Migrate an existing web service

This guide shows how to prepare a web service to run in a container on Cloud Run. It does not cover data migration.

Identify the port your code is listening on

Your service should listen for requests on a specific port. You must identify this port and configure Cloud Run to send requests to the same port.

This is the same port you would use when invoking your service on your local machine. For example, if to test your code you open localhost:3000, then set the container port to 3000 in Cloud Run.

Cloud Run defaults to sending requests to 8080. The value of the port to which requests are sent is always available in the PORT environment variable. It is a best practice for your code to listen on the value defined by the PORT environment variable if possible.

Remove reliance on local filesystem for persistent storage

Check your application code for reliance on local filesystems, and replace it with file storage on Cloud Storage or data storage such as Firestore or Cloud SQL.

Add a Dockerfile

In order to wrap your service in a container, you should use a Dockerfile to define the operating environment. The build and deploy quickstart shows some basic Dockerfiles you can use to get started.

Read more about customizing your Dockerfile on the Developing your service page.

Tune for concurrency and memory limits

Learn more about how concurrency works then optimize your service concurrency support in development tips for tuning concurrency

Make sure your memory limit is high enough for your application to run, including capacity for any temporary file storage your service requires.

Send logs to stdout, stderr, or /var/log

Cloud Run automatically uses Google Cloud Observability to aggregate and review your logs, as described in the logging page.