| name | galaxy-docker |
| description | Maintain and upgrade the bgruening/docker-galaxy project: bump Galaxy/Ubuntu versions, update Ansible roles and scheduler support, adjust startup/CI/tests, and manage CVMFS. |
Galaxy Docker skill
Use this skill when working in the bgruening/docker-galaxy repo to upgrade Galaxy releases or refresh runtime, scheduler, CVMFS, and CI behavior.
Quick start workflow
- Define targets: Galaxy release, Ubuntu base, scheduler expectations (Slurm/HTCondor), and CI scope.
- Update build:
galaxy/Dockerfile (release ARGs, build stages, slurm-drmaa, uv usage, npm cleanup).
- Update Ansible:
galaxy/ansible/requirements.yml and playbooks (rabbitmq.yml, condor.yml, slurm.yml, nginx.yml, proftpd.yml).
- Update runtime:
galaxy/startup.sh, galaxy/startup2.sh, and galaxy/ansible/templates/export_user_files.py.j2.
- CVMFS changes:
cvmfs/ sidecar + galaxy/docker-compose.yaml + resolver config.
- Tests/CI:
test/ scripts and .github/workflows/ (buildx caches, test orchestration).
- Run tests: Use both
--privileged and non-privileged runs where relevant.
Repo map (files to touch)
- Build:
galaxy/Dockerfile
- Startup:
galaxy/startup.sh, galaxy/startup2.sh
- Galaxy config export:
galaxy/ansible/templates/export_user_files.py.j2
- Ansible roles:
galaxy/ansible/requirements.yml
- Services:
galaxy/ansible/rabbitmq.yml, galaxy/ansible/condor.yml, galaxy/ansible/slurm.yml, galaxy/ansible/nginx.yml, galaxy/ansible/proftpd.yml
- Slurm config template:
galaxy/ansible/templates/configure_slurm.py.j2
- Container resolvers:
galaxy/ansible/templates/container_resolvers_conf.yml.j2
- CVMFS sidecar:
cvmfs/ and galaxy/docker-compose.yaml
- Tests:
test/bioblend/, test/slurm/, test/gridengine/, test/cvmfs/, test/container_resolvers_conf.ci.yml
- CI:
.github/workflows/*.yml and .github/workflows/single.sh
Guardrails and expectations
- Keep Python installs on
uv (build and runtime). Avoid pip install directly.
- Prefer buildx cache mounts in Dockerfiles and
cache-to/cache-from in GitHub Actions.
- Use
--rm for test containers and clean up by name to avoid conflicts.
- If
/tmp fills up on CI, use TMPDIR=/var/tmp for heavy Docker tests.
- Use
startup2 for richer diagnostics; keep startup.sh minimal.
CVMFS
- Privileged runs use full CVMFS client + autofs.
- Sidecar is optional via compose profile (
cvmfs/ image).
- Container resolver config should include cached mulled paths on both CVMFS and
/export.
- See
references/upgrade-25.1.md for the exact sidecar design and tests.
Slurm
- Ensure Slurm works in containers without systemd/cgroup v2 requirements.
configure_slurm.py.j2 writes cgroup.conf with CgroupPlugin=disabled.
- Slurm-DRMAA is built from source when ABI mismatches exist (documented in references).
Tests (typical order)
test/slurm/test.sh (set GALAXY_IMAGE=galaxy:test if needed)
test/gridengine/test.sh (uses ephemeris container for wait)
test/bioblend/test.sh
test/cvmfs/test.sh (sidecar + mount propagation)
startup2 sanity: docker run --rm --privileged ... /usr/bin/startup2
References
references/upgrade-25.1.md for 25.1 upgrade decisions, pins, and pitfalls.