Note: This repository serves as a reference implementation for deploying APIs on Azure. This code supports the production deployment of the Planetary Computer APIs. This repository is not meant to be reusable in other situations without significant modification, and the repository maintainers will not provide any support for non-development deployments of this code.
That said, feel free to crib any code that is useful!
This repository contains two components of the Planetary Computer APIs: the STAC API and the Tiler. These are implementations of the open source stac-fastapi and titiler projects. It uses titiler-pgstac to connect the tiler and database.
The pcstac
project provides a STAC API which indexes Microsoft's publicly available geospatial data and an API for searching through this large collection.
The pctiler
provides visualization and data access capabilities for the data in the Planetary Computer.
See collection config for more on developing collection configurations.
This repository hosts the code that is deployed in the Planetary Computer. It contains deployment code for hosting these services in Azure through running the published docker images and Helm charts in Azure Kubernetes Service (AKS), which we used to stand up a development version of the services. The production deployment code is not contained in this repository.
For documentation of how you can deploy your own test version of these services, refer to docs/01-deployment.md.
Nginx | http://localhost:8080/ |
STAC API | http://localhost:8081/stac |
Tiler | http://localhost:8082/data |
The development environment is run almost entirely through docker containers. Developing locally requires docker-compose v1.27+.
This project uses a variation on scripts to rule them all.
To set up a local environment, use
> ./scripts/setup
This will build containers, apply database migrations, and load the development data.
After migrations and development database loading are in place, you can just rebuild the docker images with
> ./scripts/update
To run the servers, use
> ./scripts/server
This will bring up the development database, STAC API, and Tiler.
To run tests, use
./scripts/test
To format code, use
./scripts/format
By default, the stac
and tiler
services will run against the development containers brought up by scripts/server
.
It can sometimes be convenient to test against other services, e.g. a test database deployed on Azure.
To do that, you can create a new environment file for the services based on ./pc-stac.dev.env
and ./pc-tiler.dev.env
.
Any environment file named similarly will be .gitignore'd, so you can leave them in your local clone and avoid
committing (e.g. ./pc-stac.testing.env
). You then need to set the PC_STAC_ENV_FILE
and PC_TILER_ENV_FILE
to the
environment files you want to use before running scripts/server
. Note: Be careful not to run migrations
with a non-dev database set - avoid scripts/setup
, or ensure the migration connection is still using the local
dev database even if using a remote test db.
This project publishes images and helm charts, which are used in the deployment of the Planetary Computer.
Images following images are hosted in the Microsoft Container Registry:
mcr.microsoft.com/planetary-computer-apis/stac
mcr.microsoft.com/planetary-computer-apis/tiler
See the Helm chart repository published to GitHub pages for the published charts.
Schemas can be built/updated with
./scripts/build_queryables