|
| 1 | +FROM docker.io/ubuntu:24.04 |
| 2 | + |
| 3 | +ARG NODE_MAJOR=20 |
| 4 | +ARG ACTIONLINT_VERSION=1.7.7 |
| 5 | +ARG NEXTFLOW_VERSION=25.04.6 |
| 6 | +ARG NFTEST_VERSION=0.9.3 |
| 7 | + |
| 8 | +ENV DEBIAN_FRONTEND=noninteractive |
| 9 | + |
| 10 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 11 | + ca-certificates \ |
| 12 | + curl \ |
| 13 | + git \ |
| 14 | + gnupg \ |
| 15 | + jq \ |
| 16 | + openjdk-17-jre-headless \ |
| 17 | + python3 \ |
| 18 | + shellcheck \ |
| 19 | + software-properties-common \ |
| 20 | + sudo \ |
| 21 | + tmux \ |
| 22 | + squashfs-tools \ |
| 23 | + uidmap \ |
| 24 | + fuse \ |
| 25 | + fuse2fs \ |
| 26 | + && add-apt-repository -y ppa:apptainer/ppa \ |
| 27 | + && apt-get update \ |
| 28 | + && apt-get install -y --no-install-recommends apptainer \ |
| 29 | + && rm -rf /var/lib/apt/lists/* |
| 30 | + |
| 31 | +RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - \ |
| 32 | + && apt-get install -y --no-install-recommends nodejs \ |
| 33 | + && rm -rf /var/lib/apt/lists/* \ |
| 34 | + && groupadd --gid 1010 nodeusers \ |
| 35 | + && mkdir -p -m 0775 /usr/local/lib/node_modules \ |
| 36 | + && chown -R root:nodeusers /usr/local/lib/node_modules |
| 37 | + |
| 38 | +RUN curl -fsSL https://raw.githubusercontent.com/nektos/act/master/install.sh | bash \ |
| 39 | + && curl -fsSL "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" \ |
| 40 | + | tar xz -C /usr/local/bin actionlint \ |
| 41 | + && chmod u+x /usr/local/bin/actionlint |
| 42 | + |
| 43 | +# GitHub CLI |
| 44 | +RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \ |
| 45 | + -o /usr/share/keyrings/githubcli-archive-keyring.gpg \ |
| 46 | + && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ |
| 47 | + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ |
| 48 | + > /etc/apt/sources.list.d/github-cli.list \ |
| 49 | + && apt-get update \ |
| 50 | + && apt-get install -y --no-install-recommends gh \ |
| 51 | + && rm -rf /var/lib/apt/lists/* |
| 52 | + |
| 53 | +# Nextflow |
| 54 | +RUN curl -fsSL https://get.nextflow.io | NXF_VER=${NEXTFLOW_VERSION} bash \ |
| 55 | + && mv nextflow /usr/local/bin/nextflow \ |
| 56 | + && chmod u+x /usr/local/bin/nextflow |
| 57 | + |
| 58 | +RUN npm install -g --save-exact prettier \ |
| 59 | + && npm install -g editorconfig editorconfig-checker |
| 60 | + |
| 61 | +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv |
| 62 | + |
| 63 | +RUN usermod -aG nodeusers ubuntu \ |
| 64 | + && echo "ubuntu ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ubuntu \ |
| 65 | + && chmod u=r,g=r /etc/sudoers.d/ubuntu \ |
| 66 | + && echo "prefix=/usr/local" >> /home/ubuntu/.npmrc |
| 67 | + |
| 68 | +ENV PATH="/home/ubuntu/.local/bin:${PATH}" |
| 69 | +ENV NXF_APPTAINER_CACHEDIR=/home/ubuntu/.cache/apptainer |
| 70 | + |
| 71 | +USER ubuntu |
| 72 | +WORKDIR /home/ubuntu |
| 73 | + |
| 74 | +RUN mkdir -p .local/bin \ |
| 75 | + && curl -fsSL https://code.askimed.com/install/nf-test | bash -s ${NFTEST_VERSION} \ |
| 76 | + && mv nf-test /home/ubuntu/.local/bin/nf-test \ |
| 77 | + && chmod u+x /home/ubuntu/.local/bin/nf-test |
| 78 | + |
| 79 | +WORKDIR /workspace |
| 80 | +CMD ["bash"] |
0 commit comments