Run Tiled using DockerΒΆ

To run tiled using docker we must first obtain a docker image containing a tiled installation. To do this run

docker pull ghcr.io/bluesky/tiled:main

In this example we will use the docker image to serve a directory of files as explained here.

First generate a directory of example files using a utility provided by Tiled.

python -m tiled.examples.generate_files example_files/

The docker container runs tiled via gunicorn which provides horizontal scaling over workers. Because of this we cannot configure tiled using commandline arguments and must specify a config file.

Take the following server configuration below:

# config.yml
trees:
  - path: /
    tree: tiled.adapters.files:DirectoryAdapter.from_directory
    args:
      directory: "example_files"
authentication:
  allow_anonymous_access: true
  single_user_api_key: SECRET

and serve it using the docker container

docker run --rm -p 8000:8000 \
  --mount type=bind,source="$(pwd)",target=/deploy \
  --env TILED_CONFIG=/deploy/config.yml ghcr.io/bluesky/tiled:main

Note that we make the data and the configuration file available to the container via bind mounds and point tiled to the configuration file using the TILED_CONFIG environment variable. We must supply the single_user_api_key in the configuration so that all workers use the same key.

This invocation can be simplified by writing a docker-compose.yml file.

# docker-compose.yml

version: "3.2" # higher config versions may also work; lower will not
services:
  tiled-server:
    image: ghcr.io/bluesky/tiled:main
    volumes:
      - type: bind
        source: .
        target: /deploy
    environment:
      - TILED_CONFIG=/deploy/config.yml
    ports:
      - 8000:8000

With this file the tiled server can be brought up by simply running docker-compose up.

To change the gunicorn configuration, to for example change the number of workers or the port, set the environment variable GUNICORN_CONF to point to a configuration file accessible in the container.