Skip to content

Using Docker Compose

With Docker Compose you can download and run GAP in a long-running container, which is prepared with all needed dependencies.
Docker is a software that allows you to run Linux programs in a container on Linux, Mac or Windows with Docker Desktop.
Docker Compose is a tool for defining multi-container Docker environments in a single YAML configuration file and deploy it with a single command.

Create a base directory

You need a base directory, where GAP stores files and activities.
Import your activities by Choosing an Activity Source.

Creating a directory for docker compose stack

The compose project needs a directory, which includes the defining compose.yaml file.
The base directory can also be in this directory e.g. /docker/geo-activity-playground/playground.

bash
mkdir -p /docker/geo-activity-playground/playground

/docker/geo-activity-playground/compose.yaml

yaml
services:
  geo-activity-playground:
    container_name: geo-activity-playground
    image: ghcr.io/martin-ueding/geo-activity-playground:latest
    volumes:
      - /docker/geo-activity-playground/playground:/data  # if using a different base path, change the left side
    ports:
      - "127.0.0.1:5000:5000" # you can change the exposed (host) port on the left side
    restart: unless-stopped

Limiting memory usage

Each worker process needs roughly 400 MB of memory. GAP picks the number of workers from the CPU cores and the memory limit of the container, so on a small machine it starts fewer of them automatically. If you want to trim it further, set the environment variables in the compose file:

yaml
    environment:
      GAP_WORKERS: 1
      GAP_THREADS: 2

Downloading the image and running the container

bash
cd /docker/geo-activity-playground
docker compose up -d

This will start the webserver on your local host: http://127.0.0.1:5000/.
If you want to open GAP to your local network, use "5000:5000" in the ports section.

Note that port 5000 may not be available on macOS because of AirPlay, so you can map to another host port e.g. "127.0.0.1:8000:5000" in the ports section.
Then you can open http://127.0.0.1:8000/ in your browser.

Stopping the container

You can temporarily stop the container (it restarts on reboot with the option restart: unless-stopped) with:

bash
docker stop geo-activity-playground

and start again with:

bash
docker start geo-activity-playground

To permanently stop the docker compose stack, use:

bash
cd /docker/geo-activity-playground
docker compose down

Updating the image and redeploy the container

bash
cd /docker/geo-activity-playground
docker compose pull
docker compose up -d --force-recreate