Files

44 lines
1.8 KiB
Docker

# bioflow-rnaseq —— RNA-seq 主链(qc/align/quant/de/enrich/fgsea/wgcna)
# 源环境: rnaseq (Python 3.11.15); 方法: docs/bioflow_image_build_playbook.md
# 每镜像=单一 conda 环境, 仅 root, 无 /home/xzq, 无 conda 本体; 工具一律 PATH 裸命令。
ARG BASE_IMAGE=ubuntu:24.04
FROM ${BASE_IMAGE} AS unpack
ARG ENV_TAR
ARG EXTRAS_TAR
COPY ${ENV_TAR} /tmp/env.tar.gz
RUN mkdir -p /opt/conda && \
(tar --ignore-zeros -xzf /tmp/env.tar.gz -C /opt/conda || true) && \
rm -f /tmp/env.tar.gz && \
test -x /opt/conda/bin/python
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
ENV PATH=/opt/conda/bin:$PATH
ENV LANG=C.UTF-8
# 先 conda-unpack(其文件清单含 bin/activate 等前缀重写目标, 不能先删),
# 再删除 conda-pack 注入的 conda 桩(镜像红线: 无 conda 可执行文件)
RUN conda-unpack && \
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate
# 宿主外部软链修复: 14 个 STAR* -> mamba env bin(conda-pack 原样打包为断链)
# extras tar = biolabx-bioinfo-missing/bin/STAR* 的打包; 镜像内解包到 /opt/star-bin 后重指。
COPY ${EXTRAS_TAR} /tmp/extras.tar.gz
RUN mkdir -p /opt/star-bin && \
tar -xzf /tmp/extras.tar.gz -C /opt/star-bin && \
rm -f /tmp/extras.tar.gz && \
for s in /opt/conda/bin/STAR /opt/conda/bin/STARlong; do \
ln -sfn /opt/star-bin/$(basename "$s") "$s"; \
done && \
for s in /opt/conda/bin/STAR-*; do \
ln -sfn /opt/star-bin/$(basename "$s") "$s"; \
done && \
test -x /opt/conda/bin/STAR
FROM ${BASE_IMAGE}
COPY --from=unpack /opt/conda /opt/conda
COPY --from=unpack /opt/star-bin /opt/star-bin
ENV PATH=/opt/conda/bin:$PATH
# STAR 系 mamba 环境二进制, 依赖 libhts.so.3/libgomp.so.1(镜像 /opt/conda/lib 已含)
ENV LD_LIBRARY_PATH=/opt/conda/lib
ENV LANG=C.UTF-8