Mercurial > repos > jpayne > refchooser
annotate Dockerfile @ 4:a657c8343dd0 draft
planemo upload commit 5080d34b4b5154190fb0c351ac20cd93ad156489
| author | galaxytrakr |
|---|---|
| date | Mon, 16 Mar 2026 15:13:28 +0000 |
| parents | 719889ec4e14 |
| children | b23f76d954e5 |
| 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"] |
