|
1 | | -FROM debian:bookworm as pigz |
2 | | -WORKDIR /build |
3 | | -RUN apt-get update && apt-get install -y gcc make wget zlib1g-dev |
4 | | -RUN wget https://zlib.net/pigz/pigz-2.8.tar.gz && \ |
5 | | - tar -xzvf pigz-2.8.tar.gz && \ |
6 | | - cd pigz-2.8 && \ |
7 | | - make |
8 | | - |
9 | | -FROM debian:bookworm as bowtie2 |
10 | | -WORKDIR /build |
11 | | -RUN apt-get update && apt-get install -y unzip wget |
12 | | -RUN wget https://github.com/BenLangmead/bowtie2/releases/download/v2.3.2/bowtie2-2.3.2-legacy-linux-x86_64.zip && \ |
13 | | - unzip bowtie2-2.3.2-legacy-linux-x86_64.zip && \ |
14 | | - mkdir bowtie2 && \ |
15 | | - cp bowtie2-2.3.2-legacy/bowtie2* bowtie2 |
16 | | - |
17 | | -FROM python:3.12.3-bookworm as build |
18 | | -WORKDIR /workflow |
19 | | -RUN curl -sSL https://install.python-poetry.org | python - |
| 1 | +FROM python:3.13-bookworm AS uv |
| 2 | +WORKDIR /app |
| 3 | +RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* |
| 4 | +RUN curl -LsSf https://astral.sh/uv/install.sh | sh |
20 | 5 | ENV PATH="/root/.local/bin:${PATH}" \ |
21 | | - POETRY_CACHE_DIR='/tmp/poetry_cache' \ |
22 | | - POETRY_NO_INTERACTION=1 \ |
23 | | - POETRY_VIRTUALENVS_IN_PROJECT=1 \ |
24 | | - POETRY_VIRTUALENVS_CREATE=1 |
25 | | -COPY pyproject.toml poetry.lock ./ |
26 | | -RUN poetry install --without dev --no-root |
| 6 | + UV_CACHE_DIR='/tmp/uv_cache' |
| 7 | +COPY uv.lock pyproject.toml README.md ./ |
| 8 | +RUN uv sync |
| 9 | + |
| 10 | +FROM python:3.13-bookworm AS deps |
| 11 | +COPY --from=ghcr.io/virtool/tools:1.1.0 /tools/bowtie2/2.5.4/bowtie* /usr/local/bin/ |
| 12 | +COPY --from=ghcr.io/virtool/tools:1.1.0 /tools/pigz/2.8/pigz /usr/local/bin/ |
27 | 13 |
|
28 | | -FROM python:3.12.3-bookworm as base |
29 | | -WORKDIR /workflow |
30 | | -ENV VIRTUAL_ENV=/app/.venv \ |
31 | | - PATH="/workflow/.venv/bin:/opt/fastqc:${PATH}" |
32 | | -COPY --from=bowtie2 /build/bowtie2/* /usr/local/bin/ |
33 | | -COPY --from=pigz /build/pigz-2.8/pigz /usr/local/bin/pigz |
34 | | -COPY --from=build /workflow/.venv /workflow/.venv |
| 14 | +FROM deps AS base |
| 15 | +WORKDIR /app |
| 16 | +ENV PATH="/app/.venv/bin:${PATH}" |
| 17 | +COPY --from=uv /app/.venv /app/.venv |
35 | 18 | COPY fixtures.py utils.py workflow.py VERSION* ./ |
36 | 19 |
|
37 | | -FROM build as test |
38 | | -COPY --from=bowtie2 /build/bowtie2/* /usr/local/bin/ |
39 | | -COPY --from=pigz /build/pigz-2.8/pigz /usr/local/bin/pigz |
40 | | -RUN curl -sSL https://install.python-poetry.org | python - |
| 20 | +FROM deps AS test |
| 21 | +WORKDIR /app |
| 22 | +RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* |
| 23 | +RUN curl -LsSf https://astral.sh/uv/install.sh | sh |
41 | 24 | ENV PATH="/root/.local/bin:${PATH}" \ |
42 | | - POETRY_CACHE_DIR='/tmp/poetry_cache' \ |
43 | | - POETRY_NO_INTERACTION=1 \ |
44 | | - POETRY_VIRTUALENVS_IN_PROJECT=1 \ |
45 | | - POETRY_VIRTUALENVS_CREATE=1 |
46 | | -RUN poetry install |
| 25 | + UV_CACHE_DIR='/tmp/uv_cache' |
| 26 | +COPY uv.lock pyproject.toml README.md ./ |
47 | 27 | COPY tests ./tests |
48 | 28 | COPY fixtures.py utils.py workflow.py ./ |
0 commit comments