Skip to content

Commit c49b685

Browse files
authored
Containerize tools (#306) and update base OS to Ubuntu 24.04LTS
* Containerize tools Fixes #304 * fix build issues * zlibbioc out; zlib&mr.raps in * Containerize tools Fixes #304 * fix some remaining build issues, prep release * rserver instructions * rserver info * use static builds for shapeit5 * fix * bump plink version
1 parent 902d15f commit c49b685

36 files changed

+200
-136
lines changed

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,20 @@ Removed features goes here
3737

3838
Miscellaneous goes here
3939

40+
## [1.10.0] - 2025-08-27
41+
42+
### Updated
43+
44+
* Use Ubuntu 24.04LTS as base image for all container builds for futureproofing/security
45+
* Add 'paramiko' package to `python3.sif` container, updated genomicSEM and added arrow, zlib, mr.raps in `r.sif` container
46+
* More recent posit/cran(@2025-08-01)/bioconductor (3.19->3.22@2025-08-01) packages, removing deprecated packages (zlibbioc)
47+
* revised a bunch of tool installer scripts
48+
* shapeit5 binaries now use static builds provided by developer
49+
50+
### Removed
51+
52+
* temporarily remove build of qctool from gwas.sif due to GCC >= 13 issues
53+
4054
## [1.9.1] - 2025-03-27
4155

4256
### Added

docker/dockerfiles/gwas/Dockerfile

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# gwas container
2-
FROM ubuntu:20.04
2+
FROM ubuntu:24.04
33

44
ENV TZ=Europe
55
ENV DEBIAN_FRONTEND=noninteractive
@@ -60,10 +60,10 @@ RUN bash /tmp/gctb/install_gctb.sh && \
6060
rm -rf /tmp/gctb
6161

6262
# qctool
63-
WORKDIR /tmp/qctool
64-
COPY /scripts/install_qctools.sh /tmp/qctool/
65-
RUN bash /tmp/qctool/install_qctools.sh && \
66-
rm -rf /tmp/qctool
63+
# WORKDIR /tmp/qctool
64+
# COPY /scripts/install_qctools.sh /tmp/qctool/
65+
# RUN bash /tmp/qctool/install_qctools.sh && \
66+
# rm -rf /tmp/qctool
6767

6868
# snptest
6969
WORKDIR /tmp/snptest
@@ -146,14 +146,17 @@ COPY /scripts/patches/shapeit4.makefile.diff /tmp/shapeit4/
146146
RUN bash /tmp/shapeit4/install_shapeit4.sh && \
147147
rm -rf /tmp/shapeit4
148148

149-
# shapeit5
149+
# shapeit5 - for now, use the static binaries.
150150
WORKDIR /tmp/shapeit5
151-
COPY /scripts/install_shapeit5.sh /tmp/shapeit5/
152-
COPY /scripts/patches/shapeit5.diff /tmp/shapeit5/
153-
COPY /scripts/patches/xcftools.diff /tmp/shapeit5/
154-
RUN bash /tmp/shapeit5/install_shapeit5.sh && \
151+
# COPY /scripts/install_shapeit5.sh /tmp/shapeit5/
152+
# COPY /scripts/patches/shapeit5.diff /tmp/shapeit5/
153+
# COPY /scripts/patches/xcftools.diff /tmp/shapeit5/
154+
# RUN bash /tmp/shapeit5/install_shapeit5.sh && \
155+
COPY /scripts/install_shapeit5_static.sh /tmp/shapeit5/
156+
RUN bash /tmp/shapeit5/install_shapeit5_static.sh && \
155157
rm -rf /tmp/shapeit5
156158

159+
157160
# eagle
158161
WORKDIR /tmp/eagle
159162
COPY /scripts/patches/eagle.diff /tmp/eagle/

docker/dockerfiles/hello/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# demo container
2-
FROM ubuntu:20.04
2+
FROM ubuntu:24.04
33

44
ENV TZ=Europe
55
ENV DEBIAN_FRONTEND=noninteractive

docker/dockerfiles/python3/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# gwas container
2-
FROM ubuntu:20.04
2+
FROM ubuntu:24.04
33

44
ENV TZ=Europe
55
ENV DEBIAN_FRONTEND=noninteractive
@@ -40,6 +40,7 @@ RUN mamba install python=3.10.6 \
4040
openpyxl=3.1.5 \
4141
pandas=2.2.3 \
4242
pandas-plink=2.2.9 \
43+
paramiko \
4344
psutil=5.9.3 \
4445
pyarrow=19.0.1 \
4546
pydot=3.0.4 \

docker/dockerfiles/r/Dockerfile

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# R container
2-
FROM ghcr.io/rocker-org/verse:4.4.1
3-
# based on Ubuntu 22.04.5 LTS (jammy)
2+
FROM ghcr.io/rocker-org/verse:4.5.1
3+
# based on Ubuntu 24.04 LTS (noble)
44

55
ENV TZ=Europe
66
ENV DEBIAN_FRONTEND=noninteractive
@@ -10,19 +10,19 @@ WORKDIR /tmp
1010

1111
# deps for R packages;
1212
RUN apt-get update -y && apt-get install -y --no-install-recommends \
13-
apt-utils=2.4.13 \
14-
ca-certificates=20240203~22.04.1 && \
13+
apt-utils=2.8.3 \
14+
ca-certificates=20240203 && \
1515
update-ca-certificates && \
1616
apt-get clean && \
1717
rm -rf /var/lib/apt/lists/*
1818

1919
RUN apt-get update -y && apt-get install -y --no-install-recommends \
20-
curl=7.81.0-1ubuntu1.18 \
21-
libperl-dev=5.34.0-3ubuntu1.3 \
22-
libgslcblas0=2.7.1+dfsg-3 \
23-
lmodern=2.004.5-6.1 \
24-
texlive-latex-extra=2021.20220204-1 && \
25-
wget=1.21.2-2ubuntu1.1 \
20+
curl=8.5.0-2ubuntu10.6 \
21+
libperl-dev=5.38.2-3.2ubuntu0.2 \
22+
libgslcblas0=2.7.1+dfsg-6ubuntu2 \
23+
lmodern=2.005-1 \
24+
texlive-latex-extra=2023.20240207-1 && \
25+
wget=1.21.4-1ubuntu4.1 \
2626
apt-get clean && \
2727
rm -rf /var/lib/apt/lists/*
2828

@@ -35,7 +35,7 @@ RUN bash /tmp/gcta/install_gcta.sh && \
3535
# R packages.
3636
# CRAN packages
3737
WORKDIR /tmp/
38-
RUN R -e "install.packages('devtools', repos='https://packagemanager.posit.co/cran/__linux__/jammy/2024-09-04', dependencies=c('Depends', 'Imports', 'LinkingTo'))"
38+
RUN R -e "install.packages('devtools', repos='https://packagemanager.posit.co/cran/__linux__/noble/2025-08-01', dependencies=c('Depends', 'Imports', 'LinkingTo'))"
3939
COPY /scripts/R/cran.R .
4040
RUN Rscript cran.R
4141

docker/scripts/R/bioconductor.R

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
dependencies <- c('Depends', 'Imports', 'LinkingTo')
33
upgrade <- 'default'
44

5-
url = "https://packagemanager.posit.co/bioconductor/__linux__/jammy/2024-09-04"
5+
url = "https://packagemanager.posit.co/bioconductor/__linux__/noble/2025-08-01"
66
# Configure BioCManager to use Posit Package Manager:
7-
options(BioC_mirror = "https://packagemanager.posit.co/bioconductor/2024-09-04")
8-
options(BIOCONDUCTOR_CONFIG_FILE = "https://packagemanager.posit.co/bioconductor/2024-09-04/config.yaml")
7+
options(BioC_mirror = "https://packagemanager.posit.co/bioconductor/2025-08-01")
8+
options(BIOCONDUCTOR_CONFIG_FILE = "https://packagemanager.posit.co/bioconductor/2025-08-01/config.yaml")
99

1010
# Configure a CRAN snapshot compatible with Bioconductor 3.19:
11-
options(repos = c(CRAN = "https://packagemanager.posit.co/cran/__linux__/jammy/2024-09-04"))
11+
options(repos = c(CRAN = "https://packagemanager.posit.co/cran/__linux__/noble/2025-08-01"))
1212

1313
# Bioconductor packages
1414
packages <- c(
@@ -18,24 +18,24 @@ packages <- c(
1818
'biomaRt',
1919
'biomartr',
2020
'clusterProfiler',
21+
'GenomeInfoDb',
2122
'gwasurvivr',
2223
'GWASTools',
2324
'limma',
2425
'org.Hs.eg.db',
2526
'rtracklayer',
2627
'snpStats',
2728
'TMixClust',
28-
'VariantAnnotation',
29-
'zlibbioc')
29+
'VariantAnnotation')
3030

3131
# install package from Bioconductor and quit with error if installation fails
3232
library(devtools)
33-
BiocManager::install(version='3.19', ask=FALSE)
33+
BiocManager::install(version='3.22', ask=FALSE)
3434

3535
for (package in packages) {
3636
tryCatch(
3737
{
38-
BiocManager::install(package, version='3.19')
38+
BiocManager::install(package, version='3.22')
3939
},
4040
error = function(e) {
4141
cat("Error occurred during package installation:\n")

docker/scripts/R/cran.R

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require(devtools)
2-
url <- "https://packagemanager.posit.co/cran/__linux__/jammy/2024-09-04"
2+
url <- "https://packagemanager.posit.co/cran/__linux__/noble/2025-08-01"
33
dependencies <- c('Depends', 'Imports', 'LinkingTo')
44
upgrade <- 'default'
55

@@ -10,6 +10,7 @@ packages <- list(
1010
'AER',
1111
'argparser',
1212
'arsenal',
13+
'arrow',
1314
'bigreadr',
1415
'bigsnpr',
1516
'BiocManager',
@@ -98,7 +99,8 @@ packages <- list(
9899
'tidyr',
99100
'tree',
100101
'vctrs',
101-
'xgboost')
102+
'xgboost',
103+
'zlib')
102104

103105
# install package from CRAN and quit with error if installation fails
104106
# for (package in names(packages)) {

docker/scripts/R/github.R

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
url <- "https://packagemanager.posit.co/cran/__linux__/jammy/2024-09-04"
1+
url <- "https://packagemanager.posit.co/cran/__linux__/noble/2025-08-01"
22
dependencies <- c('Depends', 'Imports', 'LinkingTo')
33
# upgrade <- 'default'
44
upgrade <- 'never'
@@ -10,7 +10,7 @@ packages <- list(
1010
'alexploner/cfdr.pleio' = '76d5085e6d3f3ca9576d5d7564d2acf11bcfd021',
1111
'dajiangliu/rareGWAMA' = '72e962dae19dc07251244f6c33275ada189c2126',
1212
'deepchocolate/glm-extras' = 'ecba68c0378fc953edf8fe594ce914aff8ada6fa',
13-
'GenomicSEM/GenomicSEM' = '199d16f5e45c040a25ee0c885338ebd667277135',
13+
'GenomicSEM/GenomicSEM' = '8e0ef594e95885b1f734f1dfcfe668b16ada2880',
1414
'jamesliley/cfdr' = 'ec5fddbd27c746a470eb827dc249a80194b231e8',
1515
'jamesliley/cFDR-common-controls' = '9b923fea283e2373ee8effa2909620a1930004bd',
1616
# gwasvcf deps:
@@ -21,6 +21,7 @@ packages <- list(
2121
'rondolab/MR-PRESSO' = '3e3c92d7eda6dce0d1d66077373ec0f7ff4f7e87',
2222
'gqi/MRMix'='56afdb2bc96760842405396f5d3f02e60e305039',
2323
'WSpiller/RadialMR' = '0ed91f83aebf265a09482561c128c830e58ed697',
24+
'qingyuanzhao/mr.raps' = '27b96f31e26ae97a395422bd757f514a7f96cc85',
2425
'MRCIEU/TwoSampleMR' = '578c68fa754c57d764553812bf85d69ecf43b011',
2526
'MRCIEU/gwasglue' = 'c2d5660eed389e1a9b3e04406b88731d642243f1',
2627
'noahlorinczcomi/MRBEE' = '6295549a1f5a158c6701eb793646d60c8aef11ca',

docker/scripts/apt_get_essential.sh

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,43 @@
11
#!/bin/sh
22
set -euo pipefail
33

4-
apt-get update && apt-get install -y --no-install-recommends apt-utils=2.0.10
5-
apt-get update && apt-get install -y --no-install-recommends ca-certificates=20240203~20.04.1 && \
4+
apt-get update && apt-get install -y --no-install-recommends apt-utils=2.8.3
5+
apt-get update && apt-get install -y --no-install-recommends ca-certificates=20240203 && \
66
update-ca-certificates
77

88
# (!) Keep the list below sorted (!)
99
apt-get update && apt-get install -y --no-install-recommends \
10-
autoconf=2.69-11.1 \
11-
automake=1:1.16.1-4ubuntu6 \
12-
build-essential=12.8ubuntu1 \
13-
bzip2=1.0.8-2 \
14-
cmake=3.16.3-1ubuntu1.20.04.1 \
15-
curl=7.68.0-1ubuntu2.25 \
16-
dos2unix=7.4.0-2 \
17-
gdb=9.1-0ubuntu1 \
18-
gfortran=4:9.3.0-1ubuntu2 \
19-
git=1:2.25.1-1ubuntu3.14 \
20-
less=551-1ubuntu0.3 \
21-
libatlas-base-dev=3.10.3-8ubuntu7 \
22-
libcurl4-openssl-dev=7.68.0-1ubuntu2.25 \
23-
libgomp1=10.5.0-1ubuntu1~20.04 \
24-
libgsl-dev=2.5+dfsg-6+deb10u1build0.20.04.1 \
25-
libnss3=2:3.98-0ubuntu0.20.04.2 \
26-
libpcre2-dev=10.34-7ubuntu0.1 \
27-
libxt-dev=1:1.1.5-1 \
28-
pandoc=2.5-3build2 \
29-
pandoc-citeproc=0.15.0.1-1build4 \
30-
parallel=20161222-1.1 \
31-
perl=5.30.0-9ubuntu0.5 \
32-
pkg-config=0.29.1-0ubuntu4 \
33-
python3=3.8.2-0ubuntu2 \
34-
python3-pytest=4.6.9-1 \
35-
tar=1.30+dfsg-7ubuntu0.20.04.4 \
36-
tofrodos=1.7.13+ds-4 \
37-
unzip=6.0-25ubuntu1.1 \
38-
vim=2:8.1.2269-1ubuntu5.31 \
39-
wget=1.20.3-1ubuntu2.1 \
40-
zlib1g-dev=1:1.2.11.dfsg-2ubuntu1.5
41-
10+
autoconf=2.71-3 \
11+
automake=1:1.16.5-1.3ubuntu1 \
12+
build-essential=12.10ubuntu1 \
13+
bzip2=1.0.8-5.1build0.1 \
14+
cmake=3.28.3-1build7 \
15+
curl=8.5.0-2ubuntu10.6 \
16+
dos2unix=7.5.1-1 \
17+
gdb=15.0.50.20240403-0ubuntu1 \
18+
gfortran=4:13.2.0-7ubuntu1 \
19+
git=1:2.43.0-1ubuntu7.3 \
20+
less=590-2ubuntu2.1 \
21+
libatlas-base-dev=3.10.3-13ubuntu1 \
22+
libcurl4-openssl-dev=8.5.0-2ubuntu10.6 \
23+
libgomp1=14.2.0-4ubuntu2~24.04 \
24+
libgsl-dev=2.7.1+dfsg-6ubuntu2 \
25+
libnss3=2:3.98-1build1 \
26+
libpcre2-dev=10.42-4ubuntu2.1 \
27+
libxt-dev=1:1.2.1-1.2build1 \
28+
pandoc=3.1.3+ds-2 \
29+
parallel=20231122+ds-1 \
30+
perl=5.38.2-3.2ubuntu0.2 \
31+
pkg-config=1.8.1-2build1 \
32+
python3=3.12.3-0ubuntu2 \
33+
python3-pytest=7.4.4-1 \
34+
tar=1.35+dfsg-3build1 \
35+
tofrodos=1.7.13+ds-6 \
36+
unzip=6.0-28ubuntu4.1 \
37+
vim=2:9.1.0016-1ubuntu7.8 \
38+
wget=1.21.4-1ubuntu4.1 \
39+
zlib1g-dev=1:1.3.dfsg-3.1ubuntu2.1
40+
4241
apt-get clean && rm -rf /var/lib/apt/lists/*
4342

4443
# /usr/bin/python must exist for bgenix, qctool

docker/scripts/install_bcftools.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ set -euo pipefail
33

44
# deps
55
apt-get update && apt-get install -y --no-install-recommends \
6-
libcurl4-gnutls-dev=7.68.0-1ubuntu2.25 \
7-
libperl-dev=5.30.0-9ubuntu0.5
6+
libcurl4-gnutls-dev=8.5.0-2ubuntu10.6 \
7+
libperl-dev=5.38.2-3.2ubuntu0.2
88

99
apt-get clean && \
1010
rm -rf /var/lib/apt/lists/*

0 commit comments

Comments
 (0)