Lily deployment: docker compose

Lily can be easily dockerized and ran inside docker, which is particularly useful for testing deployments.

Lily also includes a docker-compose that can be used to get familiar with Lily operation and how it integrates with supporting services.

Running in production might require a more sophisticated deployment than docker-compose. For that, we recommend reading the hardware requirements and Kubernetes deployment guide.


Docker images

Lily docker images can be produced for multiple networks via make by passing one of the following targets as an argument: docker-mainnet, docker-calibnet, docker-nerpanet, docker-butterflynet, docker-interopnet, docker-2k.

Prebuilt images are also available at Docker Hub: https://hub.docker.com/r/filecoin/lily/tags.

The docker image tagging convention is:

  • the <version>[-<network-name>][-dev] where <version> follows semantic versioning (vMAJOR.MINOR.REV),
  • -<network-name> can either be omitted for Main network or use -calibnet for Calibration network (Note: Currently only Main and Calibration networks have prebuilt Lily images),
  • and an optional -dev provides the container which has golang toolchain, debugging tools and a shell included for debugging and troubleshooting within the container.

Docker Compose and additional Docker services

Lily comes with a docker-compose.yml template that provides support for conveniently launching supporting services:

  • timescaledb - database
  • prometheus - metrics
  • grafana - dashboards
  • jaeger - tracing

You can start/stop these services with:

docker-compose up -d
docker-compose down

For more information about Docker Compose see the official documentation.

The services run on the following defaults:

  • Postgres (w/ TimescaleDB)

    • localhost:5432
    • Username: postgres
    • Password passowrd
  • Grafana UI

    • localhost:3000
    • Username: admin
    • Password: admin
  • Prometheus UI

    • localhost:9090
  • Jaeger UI

    • localhost:16686

If you want to separately run Lily in docker you will need to configure it to use the network overlay created by docker compose and make sure that it is configured to point to the endpoints used by the supporting services.