Last active
January 8, 2025 17:57
-
-
Save 0187773933/4580d9a37891922a1ada0fb569607642 to your computer and use it in GitHub Desktop.
FSL Alpine Docker Install
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM alpine:latest | |
ENV LANG=C.UTF-8 | |
ENV FSLDIR="/opt/miniconda/envs/FSL/share/fsl" | |
ENV PATH="$FSLDIR/bin:$PATH" | |
ENV TERM=xterm | |
ENV CONDA_OVERRIDE_GLIBC=2.34 | |
ENV CONDA_ALWAYS_YES=true | |
ENV CONDA_AUTO_UPDATE_CONDA=false | |
# ENV MAMBA_ROOT_PREFIX=/opt/miniconda | |
RUN apk update && \ | |
apk add --no-cache \ | |
ca-certificates \ | |
openssl \ | |
curl && \ | |
mkdir -p /usr/local/share/ca-certificates | |
# Add both G2 root and L1K intermediate certificates | |
RUN printf '%s\n' \ | |
'-----BEGIN CERTIFICATE-----' \ | |
'MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC' \ | |
'VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50' \ | |
'cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs' \ | |
'IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz' \ | |
'dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy' \ | |
'NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu' \ | |
'dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt' \ | |
'dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0' \ | |
'aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj' \ | |
'YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK' \ | |
'AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T' \ | |
'RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN' \ | |
'cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW' \ | |
'wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1' \ | |
'U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0' \ | |
'jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP' \ | |
'BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN' \ | |
'BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/' \ | |
'jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ' \ | |
'Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v' \ | |
'1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R' \ | |
'nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH' \ | |
'VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g==' \ | |
'-----END CERTIFICATE-----' > /usr/local/share/ca-certificates/entrust-g2.crt && \ | |
printf '%s\n' \ | |
'-----BEGIN CERTIFICATE-----' \ | |
'MIIFDjCCA/agAwIBAgIMDulMwwAAAABR03eFMA0GCSqGSIb3DQEBCwUAMIG+MQsw' \ | |
'CQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2Vl' \ | |
'IHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkg' \ | |
'RW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQD' \ | |
'EylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0x' \ | |
'NTEwMDUxOTEzNTZaFw0zMDEyMDUxOTQzNTZaMIG6MQswCQYDVQQGEwJVUzEWMBQG' \ | |
'A1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5l' \ | |
'dC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAt' \ | |
'IGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRp' \ | |
'ZmljYXRpb24gQXV0aG9yaXR5IC0gTDFLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A' \ | |
'MIIBCgKCAQEA2j+W0E25L0Tn2zlem1DuXKVh2kFnUwmqAJqOV38pa9vH4SEkqjrQ' \ | |
'jUcj0u1yFvCRIdJdt7hLqIOPt5EyaM/OJZMssn2XyP7BtBe6CZ4DkJN7fEmDImiK' \ | |
'm95HwzGYei59QAvS7z7Tsoyqj0ip/wDoKVgG97aTWpRzJiatWA7lQrjV6nN5ZGhT' \ | |
'JbiEz5R6rgZFDKNrTdDGvuoYpDbwkrK6HIiPOlJ/915tgxyd8B/lw9bdpXiSPbBt' \ | |
'LOrJz5RBGXFEaLpHPATpXbo+8DX3Fbae8i4VHj9HyMg4p3NFXU2wO7GOFyk36t0F' \ | |
'ASK7lDYqjVs1/lMZLwhGwSqzGmIdTivZGwIDAQABo4IBDDCCAQgwDgYDVR0PAQH/' \ | |
'BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwMwYIKwYBBQUHAQEEJzAlMCMGCCsG' \ | |
'AQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAwBgNVHR8EKTAnMCWgI6Ah' \ | |
'hh9odHRwOi8vY3JsLmVudHJ1c3QubmV0L2cyY2EuY3JsMDsGA1UdIAQ0MDIwMAYE' \ | |
'VR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L3JwYTAd' \ | |
'BgNVHQ4EFgQUgqJwdN28Uz/Pe9T3zX+nYMYKTL8wHwYDVR0jBBgwFoAUanImetAe' \ | |
'733nO2lR1GyNn5ASZqswDQYJKoZIhvcNAQELBQADggEBADnVjpiDYcgsY9NwHRkw' \ | |
'y/YJrMxp1cncN0HyMg/vdMNY9ngnCTQIlZIv19+4o/0OgemknNM/TWgrFTEKFcxS' \ | |
'BJPok1DD2bHi4Wi3Ogl08TRYCj93mEC45mj/XeTIRsXsgdfJghhcg85x2Ly/rJkC' \ | |
'k9uUmITSnKa1/ly78EqvIazCP0kkZ9Yujs+szGQVGHLlbHfTUqi53Y2sAEo1GdRv' \ | |
'c6N172tkw+CNgxKhiucOhk3YtCAbvmqljEtoZuMrx1gL+1YQ1JH7HdMxWBCMRON1' \ | |
'exCdtTix9qrKgWRs6PLigVWXUX/hwidQosk8WwBD9lu51aX8/wdQQGcHsFXwt35u' \ | |
'Lcw=' \ | |
'-----END CERTIFICATE-----' > /usr/local/share/ca-certificates/entrust-l1k.crt && \ | |
update-ca-certificates | |
# Set certificate environment variables | |
ENV SSL_CERT_DIR=/etc/ssl/certs | |
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt | |
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt | |
# Install glibc 2.34 | |
RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ | |
ALPINE_GLIBC_PACKAGE_VERSION="2.34-r0" && \ | |
ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ | |
ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ | |
ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ | |
apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \ | |
echo \ | |
"-----BEGIN PUBLIC KEY-----\ | |
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m\ | |
y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu\ | |
tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp\ | |
m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY\ | |
KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc\ | |
Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m\ | |
1QIDAQAB\ | |
-----END PUBLIC KEY-----" | sed 's/ */\n/g' > "/etc/apk/keys/sgerrand.rsa.pub" && \ | |
wget --no-verbose \ | |
"$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ | |
mv /etc/nsswitch.conf /etc/nsswitch.conf.bak && \ | |
apk add --no-cache --force-overwrite \ | |
"$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ | |
mv /etc/nsswitch.conf.bak /etc/nsswitch.conf && \ | |
rm "/etc/apk/keys/sgerrand.rsa.pub" && \ | |
(/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true) && \ | |
echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ | |
apk del glibc-i18n && \ | |
rm "/root/.wget-hsts" && \ | |
apk del .build-dependencies && \ | |
rm \ | |
"$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ | |
"$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" | |
# Install required packages | |
RUN apk add --no-cache \ | |
bash \ | |
libstdc++ \ | |
curl \ | |
sudo \ | |
python3 \ | |
py3-pip \ | |
python3-dev \ | |
bzip2 \ | |
tar \ | |
wget \ | |
file \ | |
bc \ | |
gcc \ | |
g++ \ | |
build-base \ | |
musl-dev \ | |
gzip \ | |
binutils \ | |
gtk+2.0 \ | |
firefox \ | |
pulseaudio \ | |
mesa-dev \ | |
mesa-dri-gallium \ | |
mesa-utils \ | |
mesa-gl \ | |
mesa-egl \ | |
mesa-gbm \ | |
libclc \ | |
libx11-dev | |
RUN adduser -D -s /bin/bash morphs && \ | |
echo "morphs ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers | |
WORKDIR /home/morphs | |
RUN curl -fsSL https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/Miniconda3.sh && \ | |
bash /tmp/Miniconda3.sh -b -p /opt/miniconda && \ | |
rm /tmp/Miniconda3.sh | |
ENV PATH="/opt/miniconda/bin:$PATH" | |
RUN conda install -n base -c conda-forge mamba | |
RUN wget https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fsl-6.0.7.9_linux-64.yml -O /tmp/fsl-6.0.7.9_linux-64.yml | |
RUN mamba create --yes --name FSL | |
RUN mamba install --yes --name FSL -f /tmp/fsl-6.0.7.9_linux-64.yml | |
RUN mamba clean --all --yes | |
USER morphs | |
WORKDIR /home/morphs | |
ENV PATH="/opt/miniconda/bin:$PATH" | |
RUN /opt/miniconda/bin/conda init bash && \ | |
echo "source /opt/miniconda/etc/profile.d/conda.sh" >> ~/.bashrc && \ | |
echo "conda activate FSL" >> ~/.bashrc && \ | |
bash -c "source ~/.bashrc && conda activate FSL && conda deactivate" | |
# Ensure Conda is available in all shells | |
ENV PATH="/opt/miniconda/bin:$PATH" | |
# Use bash as the entry point and force it to load the configuration | |
ENTRYPOINT [ "/bin/bash", "--rcfile", "/home/morphs/.bashrc", "-i" ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://fsl.fmrib.ox.ac.uk/fsl/docs/#/install/container
Entrust Root Certification Authority (EC1)
https://www.entrust.com/resources/tools/root-certificate-downloads
https://git.fmrib.ox.ac.uk/fsl
python-3.11.8
https://git.fmrib.ox.ac.uk/fsl/conda/fsl-base/-/blob/master/meta.yaml?ref_type=heads
conda-forge/miniforge#219
https://github.com/Docker-Hub-frolvlad/docker-alpine-glibc/blob/master/Dockerfile
https://neurostars.org/t/problems-installing-fsl/27620/57?page=3
https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/public/
Linking python-graphviz-0.20.3-pyh91182bf_2
Linking pyopengl-3.1.6-pyhd8ed1ab_2
/home/morphs/miniconda/envs/FSL/bin/.pyopengl-post-link.sh: line 11: 3249 Segmentation fault (core dumped) $PREFIX/bin/python -c "import OpenGL.GL"
Warning: Missing OpenGL driver, install with yum install mesa-libGL-devel or equivalent