Skip to content

Fairflow-BioinformaticsFramework/galaxy-formed

Repository files navigation

FairFlow Galaxy Instance

A pre-configured, containerized Galaxy instance built for the FairFlow bioinformatics framework. Ships ready-to-use with a clean interface, Docker-based tool execution, and an automatic example dataset — no build step required for end users.


Features

  • One-command startup — pull and run with a single docker compose up
  • Docker-in-Docker tool execution — Galaxy tools run inside isolated Docker containers via the host socket
  • Lemaitre integration — drag-and-drop tool deployment service pre-wired and ready at port 8081
  • Pre-loaded example datasetsetA.csv (a 980-gene × 501-sample scRNA-seq matrix) is automatically uploaded to a public shared history on first boot
  • Clean UI — Interactive Tools and Workflows sections removed from the interface; only Custom Functions are shown
  • Custom welcome page — step-by-step guide for new users built into the Galaxy home screen

Requirements

  • Docker Desktop (Windows/macOS) or Docker Engine + Compose (Linux)
  • No local build required — the image is pulled automatically from GitHub Container Registry

Quick Start

1. Download the compose file

Save this docker-compose.yaml to a local folder:

services:
  galaxy:
    image: ghcr.io/fairflow-bioinformaticsframework/fairflow-galaxy:latest
    container_name: galaxy
    hostname: galaxy
    privileged: true
    ports:
      - "8080:80"
      - "8021:21"
      - "8022:22"
    volumes:
      - galaxy-storage:/export/
      - personal-tools:/srv_tools/
    environment:
      - GALAXY_CONFIG_ALLOW_PATH_PASTE=True
      - GALAXY_CONFIG_MASTER_API_KEY=fairflow_master_key_123
      - GALAXY_CONFIG_TOOL_CONFIG_FILE=/srv_tools/my_tools.xml
      - GALAXY_CONFIG_BRAND=Reproducible Bioinformatics Galaxy
      - GALAXY_DOCKER_ENABLED=True
      - ENABLE_TTS_INSTALL=False
      - GALAXY_CONFIG_CLEANUP_JOB=never
      - GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES=False
      - GALAXY_CONFIG_INTERACTIVETOOLS_ENABLE=False
      - GALAXY_CONFIG_DISPLAY_BUILTIN_CONVERTERS=False
      - NONUSE=reports,nodejs,condor,slurmctld,slurmd,docker
    restart: on-failure

  lemaitre:
    image: ghcr.io/fairflow-bioinformaticsframework/lemaitre:1.3.3
    container_name: galaxy-lemaitre-1
    ports:
      - "8081:8000"
    volumes:
      - personal-tools:/srv_tools/
    environment:
      - TOOL_DIR=/srv_tools/
      - TOOL_CONF=/srv_tools/my_tools.xml
      - SECTION_NAME=Custom Functions
    restart: on-failure

volumes:
  personal-tools:
  galaxy-storage:

2. Start the services

docker compose up

Galaxy will be available at http://localhost:8080 after ~2–3 minutes.
Lemaitre will be available at http://localhost:8081.

3. First boot

On first startup, Galaxy will automatically:

  1. Create an admin user
  2. Upload setA.csv to a public shared history called Example Data
  3. Make the history importable by all users

Subsequent restarts skip this step since the history already exists.


Services

Service URL Description
Galaxy http://localhost:8080 Main Galaxy interface
Lemaitre http://localhost:8081 Tool deployment service

Running your first analysis

Import the example dataset

  1. In Galaxy, go to Data → Histories → Published Histories
  2. Open Example Data
  3. Click "Import this history"
  4. The setA.csv dataset will appear in your history panel

Run the topX tool

  1. In the left panel under Custom Functions, click topX
  2. Select setA.csv as the input matrix
  3. Set the parameters:
    • Format: csv
    • Separator: comma
    • Raw count: TRUE
    • Threshold: 10000
    • Type: expression
  4. Click Run Tool

Two outputs will appear in your history:

  • A PDF with the gene expression distribution plot
  • A TXT file with the filtered expression matrix (top 10,000 expressed genes)

Installing custom tools via Lemaitre

Lemaitre allows you to upload Galaxy XML tool wrappers into this instance without restarting anything.

  1. Open http://localhost:8081
  2. Upload your .xml tool file
  3. The tool appears immediately under Custom Functions in Galaxy

Each tool must reference a Docker image in the XML:

<requirements>
    <container type="docker">your-image:tag</container>
</requirements>

All jobs run inside isolated Docker containers. The host Docker socket is mounted inside Galaxy to allow container execution.


Architecture

Host machine
├── Docker socket (/var/run/docker.sock)
│
├── galaxy (container)
│   ├── Galaxy server (port 80 → 8080)
│   ├── PostgreSQL (internal)
│   ├── RabbitMQ (internal)
│   ├── /export/ volume → galaxy-storage (DB, files, config)
│   ├── /srv_tools/ volume → personal-tools (tool XMLs, tool_conf)
│   └── /default_tools/ (baked into image: topX.xml, setA.csv)
│
└── galaxy-lemaitre-1 (container)
    ├── Lemaitre server (port 8000 → 8081)
    └── /srv_tools/ volume → personal-tools (shared with galaxy)

When a tool runs, Galaxy executes a Docker container on the host daemon using the mounted socket. The job working directory inside /export/ is mounted into the child container via the galaxy_galaxy-storage named volume.


Image

The Galaxy image is built automatically via GitHub Actions on every push to main and published to:

ghcr.io/fairflow-bioinformaticsframework/fairflow-galaxy:latest

What the image includes

  • Base: quay.io/bgruening/galaxy (Galaxy 24.1)
  • docker-ce-cli — Docker client for launching tool containers
  • bioblend — Python Galaxy API client (used for startup automation)
  • Custom job_conf.xml — configures local runner with Docker enabled
  • Custom welcome.html — FairFlow-branded home page with quick start guide
  • Patched analysis.bundled.js — Interactive Tools and Workflows sections hidden from UI
  • Empty tool_conf_interactive.xml — Interactive Tools panel suppressed
  • topX.xml and setA.csv baked into /default_tools/
  • Custom startup.sh — orchestrates dockerd, tool copy, and API-based history seeding

Stopping and resetting

Stop without losing data:

docker compose down

Stop and delete all data (full reset):

docker compose down -v

Update to the latest image:

docker compose pull
docker compose down
docker compose up

Development

To build the image locally instead of pulling from the registry:

  1. Clone this repository
  2. Replace image: with build: . in docker-compose.yaml
  3. Run:
docker compose build --no-cache
docker compose up

Files required in the same directory as the Dockerfile:

  • Dockerfile
  • job_conf.xml
  • topX.xml
  • setA.csv
  • welcome.html

About FairFlow

FairFlow is a transparency-first framework for reproducible and verifiable bioinformatics workflows. It enables the definition of a pipeline once (via Baryon) and automatic deployment across multiple environments (R, Python, Bash, Galaxy, Nextflow, StreamFlow), all executed inside deterministic containerized environments.

github.com/Fairflow-BioinformaticsFramework

About

Docker Compose setup to run a customized Galaxy instance with additional tools.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors