Mercurial > repos > galaxytrakr > mitokmer
annotate Dockerfile @ 8:2b1f3db24c25 draft default tip
planemo upload commit 41caf97a4a9a7928318af8b24601f84a380fe2db
| author | galaxytrakr |
|---|---|
| date | Fri, 18 Sep 2026 12:26:54 +0000 |
| parents | ecf96ad08611 |
| children |
| rev | line source |
|---|---|
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
1 # ============================================================= |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
2 # Dockerfile for mitokmer2 (compatible with Galaxy/AWS Batch) |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
3 # ============================================================= |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
4 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
5 # ---------- Build Stage ---------- |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
6 FROM ubuntu:focal AS build |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
7 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
8 ARG DEBIAN_FRONTEND=noninteractive |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
9 ARG PYTHON_VER="3.8" |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
10 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
11 WORKDIR /workspace |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
12 |
|
4
ecf96ad08611
planemo upload commit 26a6ad9e9ae7fdb967832a65f5173ea347da7f6c
galaxytrakr
parents:
2
diff
changeset
|
13 |
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
14 # Build dependencies: compiler, zlib dev headers, git, Python |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
15 RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
16 build-essential \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
17 g++ \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
18 git \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
19 wget \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
20 zlib1g-dev \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
21 ca-certificates \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
22 python${PYTHON_VER} \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
23 python${PYTHON_VER}-dev \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
24 python${PYTHON_VER}-venv \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
25 && rm -rf /var/lib/apt/lists/* |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
26 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
27 # Create Python virtual environment using --copies so symlinks |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
28 # do not break when the venv is copied to the runtime stage |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
29 RUN python${PYTHON_VER} -m venv --copies /opt/venv |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
30 ENV PATH="/opt/venv/bin:${PATH}" |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
31 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
32 # Install Python dependencies |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
33 RUN pip install --no-cache-dir -U pip && \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
34 pip install --no-cache-dir pandas |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
35 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
36 # Clone mitokmer2 source code from GitHub |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
37 RUN git clone https://github.com/mmammel8/mitokmer2.git /opt/mitokmer2 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
38 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
39 WORKDIR /opt/mitokmer2 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
40 |
|
2
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
41 # Compile kmer_read_1.cpp -> kmerread7 |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
42 # kmer_read_m7.py calls ./kmerread7 as a subprocess |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
43 RUN g++ -O3 kmer_read_1.cpp -o kmerread7 -lz && \ |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
44 chmod +x kmerread7 |
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
45 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
46 # Install any Python requirements declared in the repo |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
47 RUN if [ -f requirements.txt ]; then \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
48 pip install --no-cache-dir -r requirements.txt; \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
49 fi |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
50 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
51 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
52 # ---------- Runtime Stage ---------- |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
53 FROM ubuntu:focal AS runtime |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
54 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
55 ARG DEBIAN_FRONTEND=noninteractive |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
56 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
57 # Lean runtime: zlib shared library + Python runtime only |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
58 RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
59 zlib1g \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
60 libbz2-1.0 \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
61 ca-certificates \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
62 python3.8 \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
63 python3.8-venv \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
64 python3.8-distutils \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
65 && rm -rf /var/lib/apt/lists/* |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
66 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
67 # Copy compiled binary from build stage |
|
2
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
68 # kmerread7 is called by kmer_read_m7.py as ./kmerread7 so it |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
69 # must be in the working directory at runtime; place it in both |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
70 # /usr/local/bin (for PATH) and /opt/mitokmer2 (for relative invocation) |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
71 COPY --from=build /opt/mitokmer2/kmerread7 /usr/local/bin/kmerread7 |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
72 COPY --from=build /opt/mitokmer2/kmerread7 /opt/mitokmer2/kmerread7 |
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
73 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
74 # Copy Python scripts and supporting files from build stage |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
75 COPY --from=build /opt/mitokmer2 /opt/mitokmer2 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
76 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
77 # Copy Python virtual environment from build stage |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
78 COPY --from=build /opt/venv /opt/venv |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
79 |
|
2
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
80 # Refresh the dynamic linker cache |
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
81 RUN ldconfig || true |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
82 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
83 # Ensure all users (including arbitrary Galaxy UIDs) can |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
84 # read and execute binaries, scripts, and the venv |
|
2
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
85 RUN chmod a+rx /usr/local/bin/kmerread7 \ |
|
dd206296acbf
planemo upload commit 83cba09882dc583100b39b69b41cf791e4efb55a
galaxytrakr
parents:
0
diff
changeset
|
86 /opt/mitokmer2/kmerread7 && \ |
|
0
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
87 chmod -R a+rX /opt/mitokmer2 && \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
88 chmod -R a+rX /opt/venv |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
89 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
90 # Runtime environment |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
91 ENV PATH="/opt/venv/bin:/opt/mitokmer2:/usr/local/bin:${PATH}" \ |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
92 LC_ALL=C |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
93 |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
94 # IMPORTANT: No ENTRYPOINT for Galaxy/AWS Batch. Neutral CMD. |
|
adc887a1a6de
planemo upload commit 927c4ee71df7d19ceb10446a04618af22c99d839
galaxytrakr
parents:
diff
changeset
|
95 CMD ["/bin/bash"] |
