annotate Dockerfile @ 4:a657c8343dd0 draft

planemo upload commit 5080d34b4b5154190fb0c351ac20cd93ad156489
author galaxytrakr
date Mon, 16 Mar 2026 15:13:28 +0000
parents 719889ec4e14
children b23f76d954e5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
1 # =============================================================
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
2 # Dockerfile for refchooser (compatible with Galaxy)
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
3 # =============================================================
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
4
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
5 # ---------- Build Stage 1: The "Builder" ----------
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
6 # This stage downloads and prepares all our dependencies.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
7 FROM ubuntu:20.04 AS builder
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
8
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
9 # Set versions for our tools to make updates easy.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
10 ARG MASH_VER="2.3"
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
11 ARG PYTHON_VER="3.8"
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
12
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
13 # Avoid interactive prompts during apt-get install.
4
a657c8343dd0 planemo upload commit 5080d34b4b5154190fb0c351ac20cd93ad156489
galaxytrakr
parents: 2
diff changeset
14
2
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
15 ENV DEBIAN_FRONTEND=noninteractive
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
16
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
17 # Install all the dependencies needed to build our tools.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
18 RUN apt-get update && apt-get install -y --no-install-recommends \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
19 wget \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
20 tar \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
21 gzip \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
22 python${PYTHON_VER} \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
23 python${PYTHON_VER}-venv \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
24 && rm -rf /var/lib/apt/lists/*
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
25
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
26 # Set a working directory for our downloads.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
27 WORKDIR /build
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
28
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
29 # --- Install Mash ---
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
30 # Download the pre-compiled Linux binary for Mash.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
31 ADD https://github.com/marbl/Mash/releases/download/v${MASH_VER}/mash-Linux64-v${MASH_VER}.tar .
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
32 # Unpack the tarball, find the 'mash' executable, and install it to a standard location.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
33 RUN tar -xvf mash-Linux64-v${MASH_VER}.tar && \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
34 install -m 0755 mash-Linux64-v${MASH_VER}/mash /usr/local/bin/mash
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
35
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
36 # --- Install refchooser ---
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
37 # Create a Python virtual environment in a standard location.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
38 RUN python${PYTHON_VER} -m venv /opt/venv
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
39 # Activate the venv and install refchooser and its dependencies using pip.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
40 ENV PATH="/opt/venv/bin:$PATH"
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
41 RUN pip install --no-cache-dir refchooser
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
42
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
43
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
44 # ---------- Build Stage 2: The "Runtime" Stage ----------
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
45 # This is our final, lean image that will be used by Galaxy.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
46 FROM ubuntu:20.04 AS runtime
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
47
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
48 # Avoid interactive prompts.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
49 ENV DEBIAN_FRONTEND=noninteractive
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
50
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
51 # Install only the essential runtime libraries needed by Mash and Python.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
52 RUN apt-get update && apt-get install -y --no-install-recommends \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
53 libgomp1 \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
54 python3.8-venv \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
55 && rm -rf /var/lib/apt/lists/*
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
56
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
57 # --- Copy Binaries and Environment from Builder Stage ---
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
58
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
59 # Copy the compiled 'mash' binary from the builder stage.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
60 COPY --from=builder /usr/local/bin/mash /usr/local/bin/mash
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
61
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
62 # Copy the entire Python virtual environment containing 'refchooser'.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
63 COPY --from=builder /opt/venv /opt/venv
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
64
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
65 # --- Final Configuration ---
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
66
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
67 # Set the PATH environment variable so the system can find 'mash' and 'refchooser'.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
68 ENV PATH="/opt/venv/bin:$PATH"
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
69
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
70 # As a best practice for Galaxy, ensure all users can read and execute the tools.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
71 RUN chmod -R a+rX /opt/venv && \
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
72 chmod a+rx /usr/local/bin/mash
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
73
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
74 # IMPORTANT: No ENTRYPOINT. Set a neutral CMD for Galaxy compatibility.
719889ec4e14 planemo upload commit 92689f52a93241194941ecf374629245c8fb9093
galaxytrakr
parents:
diff changeset
75 CMD ["/bin/bash"]