feat(bioflow): 16 个非内核环境镜像化(plantai-env-*:20260906) + playbook 回填
按 playbook 方法补做台账 9-25 号共 16 个环境镜像(工程收尾): - 11 个 conda env + 4 个 biolabx(mamba/micromamba) + pymol-env(conda 环境) - 豁免 3 个: AI_env(12K 空壳)/r_de(残壳)/miniconda3 base(conda 本体违红线) - 新增坑位 17-21: conda-pack -n 需 PATH/pip 覆盖检测/dest-prefix 路线 (无 python 环境)/pip shebang 源前缀/conda-unpack 残留 - build_envs.sh: 非内核镜像构建入口; extra-envs/: 16 个 Dockerfile - 验证: 16/16 过 §6 清单+加强断言(无 conda-unpack/无源前缀 shebang) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
# build_envs.sh —— 非内核环境镜像构建(plantai-env-* 系列, playbook §8 台账 9-24 号)
|
||||
# 方法: docs/bioflow_image_build_playbook.md; 与 build_all.sh 同级的第二个构建入口。
|
||||
# 用法: build_envs.sh <comma-list|all> [pack-dir]
|
||||
# pack-dir: 存放 conda-pack 产物 <env>.tar.gz 的目录; 默认 bioflow-image-build。
|
||||
set -euo pipefail
|
||||
|
||||
TARGET="${1:-all}"
|
||||
PACK_DIR="${2:-/home/xzq/5090/teamWorkspace/zh/bioflow-image-build}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DF_DIR="$SCRIPT_DIR/extra-envs"
|
||||
TAG="${PLANTAI_ENV_TAG:-20260906}"
|
||||
|
||||
# 镜像名 -> 源 tar(构建顺序: 大 tar 先行, I/O 平摊)
|
||||
declare -A TARS=(
|
||||
[minerupy312]=minerupy312.tar.gz
|
||||
[at-sc]=at_sc.tar.gz
|
||||
[snpeff]=snpeff.tar.gz
|
||||
[plantai-bff]=plantai-bff.tar.gz
|
||||
[rice-download]=rice_download.tar.gz
|
||||
[rice-rna]=rice_rna-dp.tar.gz
|
||||
[beagle54]=beagle54-dp.tar.gz
|
||||
[bioinfo]=bioinfo.tar.gz
|
||||
[testpy311]=testpy311.tar.gz
|
||||
[ani]=ani-dp.tar.gz
|
||||
[vcflinshi]=vcflinshi-dp.tar.gz
|
||||
[biolabx-assembly]=biolabx-assembly.tar.gz
|
||||
[biolabx-bioinfo]=biolabx-bioinfo-missing.tar.gz
|
||||
[biolabx-smoke-tools]=biolabx-smoke-tools.tar.gz
|
||||
[biolabx-variant-tools]=biolabx-variant-tools.tar.gz
|
||||
[pymol-env]=pymol-env.tar.gz
|
||||
)
|
||||
ORDER=(minerupy312 at-sc snpeff plantai-bff rice-download rice-rna beagle54 bioinfo \
|
||||
testpy311 ani vcflinshi biolabx-assembly biolabx-bioinfo biolabx-smoke-tools \
|
||||
biolabx-variant-tools pymol-env)
|
||||
|
||||
build_one() {
|
||||
local img="$1"
|
||||
local tarf="${TARS[$img]}"
|
||||
[[ -f "$PACK_DIR/$tarf" ]] || { echo "[FAIL] missing pack artifact: $tarf" >&2; return 2; }
|
||||
# 构建上下文: pack-dir 下 stage(硬链接 tar, 同文件系统; 非内核镜像无源码)
|
||||
local stage
|
||||
stage="$(mktemp -d "$PACK_DIR/.buildenv.XXXXXX")"
|
||||
ln "$PACK_DIR/$tarf" "$stage/$tarf"
|
||||
echo "[BUILD] plantai-env-$img ($tarf)"
|
||||
docker build \
|
||||
--build-arg BASE_IMAGE="ubuntu:24.04" \
|
||||
--build-arg ENV_TAR="$tarf" \
|
||||
-f "$DF_DIR/Dockerfile.plantai-env-$img" \
|
||||
-t "plantai-env-$img:$TAG" \
|
||||
"$stage"
|
||||
rm -rf "$stage"
|
||||
echo "[OK] plantai-env-$img"
|
||||
}
|
||||
|
||||
if [[ "$TARGET" == "all" ]]; then
|
||||
for img in "${ORDER[@]}"; do
|
||||
build_one "$img"
|
||||
done
|
||||
else
|
||||
IFS=, read -ra IMGS <<< "$TARGET"
|
||||
for img in "${IMGS[@]}"; do
|
||||
[[ -n "${TARS[$img]:-}" ]] || { echo "unknown image: $img" >&2; exit 2; }
|
||||
build_one "$img"
|
||||
done
|
||||
fi
|
||||
@@ -0,0 +1,40 @@
|
||||
# plantai-env-ani —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: ani; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-at-sc —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: at_sc; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,40 @@
|
||||
# plantai-env-beagle54 —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: beagle54; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-bioinfo —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: bioinfo; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-biolabx-assembly —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: biolabx-assembly; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-biolabx-bioinfo —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: biolabx-bioinfo-missing; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-biolabx-smoke-tools —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: biolabx-smoke-tools; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-biolabx-variant-tools —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: biolabx-variant-tools; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-minerupy312 —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: minerupy312; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-plantai-bff —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: plantai-bff; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-pymol-env —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: pymol-env; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-rice-download —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: rice_download; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-rice-rna —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: rice_rna; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
gcc && rm -rf /var/lib/apt/lists/*
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-snpeff —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: snpeff; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,41 @@
|
||||
# plantai-env-testpy311 —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: testpy311; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN conda-unpack && \
|
||||
rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -0,0 +1,40 @@
|
||||
# plantai-env-vcflinshi —— 环境镜像化(非内核, 无 .so 编译段)
|
||||
# 源环境: vcflinshi; 方法: 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
|
||||
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 -n "$(ls -A /opt/conda/bin)"
|
||||
|
||||
# 先 PATH 再 conda-unpack(其 shebang 为 /usr/bin/env python)
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# conda-unpack 重定位 + conda 桩/源前缀痕迹清理 + pip entry point shebang 修复
|
||||
# (pip 脚本 shebang 写死源前缀, conda-unpack 不重定位; 2026-09-06 pymol-env 实测)
|
||||
RUN rm -f /opt/conda/bin/conda /opt/conda/bin/activate /opt/conda/bin/deactivate /opt/conda/bin/mamba /opt/conda/bin/micromamba /opt/conda/bin/conda-unpack && \
|
||||
rm -rf /opt/conda/bin/__pycache__ && \
|
||||
for f in $(grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null || true); do \
|
||||
sed -i '1s|.*|#!/opt/conda/bin/python|' "$f"; \
|
||||
done && \
|
||||
echo "UNPACK OK"
|
||||
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgomp1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=unpack /opt/conda /opt/conda
|
||||
ENV LD_LIBRARY_PATH=/opt/conda/lib
|
||||
ENV PATH=/opt/conda/bin:$PATH
|
||||
ENV LANG=C.UTF-8
|
||||
# 干净性断言(镜像红线, 构建期强制): 无 /home/xzq、无 conda 可执行、
|
||||
# 无 conda-unpack 残留、bin 无源前缀 shebang
|
||||
RUN test ! -e /home/xzq && \
|
||||
! command -v conda && ! command -v mamba && ! command -v micromamba && \
|
||||
test ! -e /opt/conda/bin/conda-unpack && \
|
||||
! grep -rlE '^#!.*home/xzq' /opt/conda/bin 2>/dev/null | grep -q . && \
|
||||
echo "CLEAN OK"
|
||||
@@ -13,7 +13,8 @@
|
||||
## 2. 适用范围
|
||||
|
||||
- **本次(8 个)**:test4py311(16G)→bioflow-gf / gfpy312(5.4G)→bioflow-gfpy / rnaseq(6.1G)→bioflow-rnaseq / rnaR(2.7G)→bioflow-rnaR / ASAW(5.1G)→bioflow-wgs / interproscanpy311(750M)→bioflow-interproscan / panfamily(1.8G)→bioflow-pan / r_de_analysis(1.6G)→bioflow-rde
|
||||
- **后续(其余 18 个环境,见 §8 台账)**:AI_env / ani / at_sc / beagle54 / bioinfo / minerupy312 / rice_download / rice_rna / snpeff / testpy311 / vcflinshi / plantai-bff / pymol-env(venv) / biolabx-assembly / biolabx-bioinfo-missing / biolabx-smoke-tools / biolabx-variant-tools / miniconda3(base)
|
||||
- **后续(2026-09-06 已完成 16 个,见 §8 台账)**:ani / at_sc / beagle54 / bioinfo / minerupy312 / rice_download / rice_rna / snpeff / testpy311 / vcflinshi / plantai-bff / pymol-env / biolabx-assembly / biolabx-bioinfo-missing / biolabx-smoke-tools / biolabx-variant-tools → 镜像 plantai-env-*:20260906。
|
||||
**豁免 3 个(不建镜像,理由记入 §8)**:AI_env(12K 空壳仅 conda-meta/etc 目录)、r_de(11M 残壳,r_de_analysis 的旧残留)、miniconda3 base(78G conda 本体,违反「镜像无 conda」红线)
|
||||
|
||||
## 3. 前置检查
|
||||
|
||||
@@ -103,6 +104,24 @@ USER root
|
||||
16. **BuildKit 上下文外软链**:docker build 对上下文外绝对软链按上下文根解析失败;stage 目录建在
|
||||
pack-dir 下用硬链接 tar + rsync 内核源码(源码仅 ~22M)。
|
||||
|
||||
17. **conda-pack -n 需要 conda 在 PATH**(2026-09-06 实测):nohup/后台脚本里 `conda-pack -n <env>`
|
||||
报 `CondaPackError: Failed to determine path to environment`——它调 conda 解析 env 路径,
|
||||
PATH 里没有 conda 时即失败(-p 路径打包不受影响)。修法:脚本开头
|
||||
`export PATH=/home/xzq/miniconda3/bin:$PATH` 或 `env PATH=... conda-pack`。
|
||||
18. **pip 覆盖检测阻断打包**(2026-09-06 实测):env 内 pip 装过 conda 不管理的文件时报
|
||||
`Files managed by conda were found to have been deleted/overwritten`(pymol-env 174 个、
|
||||
minerupy312 多个)。这些是宿主既有历史,非本次改动——加 `--ignore-missing-files` 打包。
|
||||
19. **无 python 的工具环境(dest-prefix 路线)**(2026-09-06 实测,ani/beagle54/rice_rna/vcflinshi):
|
||||
环境无 bin/python(纯 C/Java/R/perl 工具)时 conda-unpack 无法运行(shebang 是 env python,
|
||||
装系统 python3 也因包内文本重定位逻辑可跑但绕)。正解:`conda-pack -n <env> -d /opt/conda`
|
||||
打包期直接重定位到目标前缀,产物无 conda-unpack;Dockerfile 只需解包+删 conda 桩。
|
||||
20. **pip entry point shebang 写死源前缀**(2026-09-06 pymol-env 实测):conda-unpack 不重定位
|
||||
pip 装的 console_scripts(pymol/pip/wheel 等 6 个 shebang 仍是 /home/xzq/...)。
|
||||
Dockerfile unpack 段统一 `sed -i '1s|.*|#!/opt/conda/bin/python|'` 修复,
|
||||
最终层断言 `! grep -rlE '^#!.*home/xzq' /opt/conda/bin` 构建期拦截。
|
||||
21. **conda-unpack 脚本本体含源前缀**:包内 conda-unpack 是文本脚本含源前缀字符串,
|
||||
重定位完成后必须删(与 conda 桩同批),否则镜像内仍有 /home/xzq 文本痕迹。
|
||||
|
||||
## 8. 环境总台账(26 个,动态回填)
|
||||
|
||||
| # | 环境 | 位置 | 体积 | 镜像 | 用途 | 状态 |
|
||||
@@ -115,24 +134,25 @@ USER root
|
||||
| 6 | interproscanpy311 | miniconda3/envs | 707M | bioflow-interproscan | 结构域注释 | 已完成(2026-09-06) |
|
||||
| 7 | panfamily | miniconda3/envs | 1.8G | bioflow-pan | 泛基因家族 pangene | 已完成(2026-09-06) |
|
||||
| 8 | r_de_analysis | miniconda3/envs | 611M | bioflow-rde | DE 分析 | 已完成(2026-09-06) |
|
||||
| 9 | AI_env | miniconda3/envs | 12K | — | 空壳(仅目录) | 后续 |
|
||||
| 10 | ani | miniconda3/envs | 95M | — | ANI 计算 | 后续 |
|
||||
| 11 | at_sc | miniconda3/envs | 8.9G | — | 拟南芥单细胞 | 后续 |
|
||||
| 12 | beagle54 | miniconda3/envs | 393M | — | Beagle imputation | 后续 |
|
||||
| 13 | bioinfo | miniconda3/envs | 295M | — | 通用生信 | 后续 |
|
||||
| 14 | minerupy312 | miniconda3/envs | 8.1G | — | MinerU 文档解析 | 后续 |
|
||||
| 15 | rice_download | miniconda3/envs | 417M | — | 水稻数据下载 | 后续 |
|
||||
| 16 | rice_rna | miniconda3/envs | 455M | — | 水稻 RNA | 后续 |
|
||||
| 17 | snpeff | miniconda3/envs | 5.1G | — | SnpEff 注释 | 后续 |
|
||||
| 18 | testpy311 | miniconda3/envs | 149M | — | 测试环境 | 后续 |
|
||||
| 19 | vcflinshi | miniconda3/envs | 79M | — | VCF 处理 | 后续 |
|
||||
| 20 | plantai-bff | miniconda3/envs | 553M | — | BFF 服务 | 后续 |
|
||||
| 21 | pymol-env | dev 仓库 tools/(venv) | 1.3G | — | PyMOL 可视化 | 后续 |
|
||||
| 22 | biolabx-assembly | ~/.local/share/mamba/envs | 225M | — | QA 测试工具 | 后续 |
|
||||
| 23 | biolabx-bioinfo-missing | ~/.local/share/mamba/envs | 1.3G | — | QA 测试工具 | 后续 |
|
||||
| 24 | biolabx-smoke-tools | ~/.local/share/micromamba/envs | 217M | — | QA 测试工具 | 后续 |
|
||||
| 25 | biolabx-variant-tools | ~/.local/share/micromamba/envs | 284M | — | QA 测试工具 | 后续 |
|
||||
| 26 | miniconda3 (base) | miniconda3 | 78G | — | conda 本体 | 后续 |
|
||||
| 9 | AI_env | miniconda3/envs | 12K | — | 空壳(仅 conda-meta/etc) | **豁免**:空壳无内容,不建 |
|
||||
| 10 | ani | miniconda3/envs | 95M | plantai-env-ani | ANI 计算(fastANI, 无 python→dest-prefix) | 已完成(2026-09-06) |
|
||||
| 11 | at_sc | miniconda3/envs | 8.9G | plantai-env-at-sc | 拟南芥单细胞(R 4.6.1) | 已完成(2026-09-06) |
|
||||
| 12 | beagle54 | miniconda3/envs | 393M | plantai-env-beagle54 | Beagle imputation(无 python→dest-prefix) | 已完成(2026-09-06) |
|
||||
| 13 | bioinfo | miniconda3/envs | 295M | plantai-env-bioinfo | 通用生信(bwa) | 已完成(2026-09-06) |
|
||||
| 14 | minerupy312 | miniconda3/envs | 8.1G | plantai-env-minerupy312 | MinerU 文档解析 | 已完成(2026-09-06) |
|
||||
| 15 | rice_download | miniconda3/envs | 417M | plantai-env-rice-download | 水稻数据下载(SRA) | 已完成(2026-09-06) |
|
||||
| 16 | rice_rna | miniconda3/envs | 455M | plantai-env-rice-rna | 水稻 RNA(无 python→dest-prefix, 补 gcc) | 已完成(2026-09-06) |
|
||||
| 17 | snpeff | miniconda3/envs | 5.1G | plantai-env-snpeff | SnpEff 注释 | 已完成(2026-09-06) |
|
||||
| 18 | testpy311 | miniconda3/envs | 149M | plantai-env-testpy311 | 测试环境 | 已完成(2026-09-06) |
|
||||
| 19 | vcflinshi | miniconda3/envs | 79M | plantai-env-vcflinshi | VCF 处理(perl, 无 python→dest-prefix) | 已完成(2026-09-06) |
|
||||
| 20 | plantai-bff | miniconda3/envs | 553M | plantai-env-plantai-bff | BFF 服务(uvicorn) | 已完成(2026-09-06) |
|
||||
| 21 | pymol-env | dev 仓库 tools/ | 1.3G | plantai-env-pymol-env | PyMOL 可视化(conda 环境无 pyvenv.cfg, conda-pack -p 打包) | 已完成(2026-09-06) |
|
||||
| 22 | biolabx-assembly | mamba/envs | 225M | plantai-env-biolabx-assembly | 组装工具(megahit) | 已完成(2026-09-06) |
|
||||
| 23 | biolabx-bioinfo-missing | mamba/envs | 1.3G | plantai-env-biolabx-bioinfo | QA 测试工具(STAR) | 已完成(2026-09-06) |
|
||||
| 24 | biolabx-smoke-tools | micromamba/envs | 217M | plantai-env-biolabx-smoke-tools | QA 测试工具 | 已完成(2026-09-06) |
|
||||
| 25 | biolabx-variant-tools | micromamba/envs | 284M | plantai-env-biolabx-variant-tools | QA 测试工具(bcftools) | 已完成(2026-09-06) |
|
||||
| 26 | miniconda3 (base) | miniconda3 | 78G | — | conda 本体 | **豁免**:含 conda 本体违反镜像红线 |
|
||||
| 27 | r_de | miniconda3/envs | 11M | — | r_de_analysis 旧残留(conda-meta 4 文件) | **豁免**:残壳非独立环境 |
|
||||
|
||||
> 台账中「(待测)」体积与「(待确认)」用途由执行 agent 在构建过程中实测/核实后回填。
|
||||
|
||||
@@ -158,3 +178,22 @@ USER root
|
||||
| ASAW | 12m40s | 2.0G(40%) | ~40s | 5.43GB | ~4min | python 3.8.18/gatk 4.3.0.0/bwa-mem2/plink 1.90/CLEAN |
|
||||
| panfamily | 6m55s | 625M(35%) | ~20s | 1.96GB | ~2min | python 3.11.9/mafft/iqtree/fimo/blastp/orthofinder/CLEAN |
|
||||
| r_de_analysis | 7m13s | 589M(96%) | ~20s | 1.88GB | 3m25s | python 3.14.6/R 4.4.3+DESeq2/CLEAN |
|
||||
| ani | 5s | 31M | dest-prefix 免 unpack | 178MB | 23s | fastANI 1.34/CLEAN(无 python 环境) |
|
||||
| beagle54 | 33s | 271M | dest-prefix 免 unpack | 648MB | 47s | beagle(镜像内 java 自足)/CLEAN(无 python) |
|
||||
| rice_rna | 3m49s | 549M | dest-prefix 免 unpack | 1.96GB | 1m39s | Rscript/CLEAN(无 python, 补 gcc 系统软链) |
|
||||
| vcflinshi | 22s | 26M | dest-prefix 免 unpack | 173MB | 22s | perl/CLEAN(无 python) |
|
||||
| rice_download | 4m30s | 178M | ~10s | 569MB | 1m18s | python 3.10.20/fasterq-dump 3.4.1/CLEAN |
|
||||
| plantai-bff | 2m14s | 178M | ~10s | 608MB | 1m23s | python 3.11.15/uvicorn 0.52.4/CLEAN |
|
||||
| bioinfo | 25s | 97M | ~8s | 366MB | 1m6s | python 3.14.5/bwa/CLEAN |
|
||||
| testpy311 | 31s | 72M | ~8s | 289MB | 1m2s | python 3.11.15/pip/CLEAN |
|
||||
| snpeff | 9m35s | 1.8G | ~25s | 5.62GB | 4m12s | python 3.14.5/java 11/snpEff/CLEAN |
|
||||
| at_sc | 15m24s | 4.0G(45%) | ~40s | 9.24GB | ~6min | python 3.11.6/R 4.6.1/CLEAN |
|
||||
| minerupy312 | 11m58s | 4.3G(53%) | ~40s | 8.58GB | ~5min | python 3.12.13/mineru/CLEAN(--ignore-missing-files) |
|
||||
| pymol-env | 6m3s | 414M(32%) | ~25s | 1.38GB | 2m36s | python 3.12.13/pymol shebang 修复/CLEAN(--ignore-missing-files) |
|
||||
| biolabx-assembly | 25s | 80M | ~8s | 298MB | 1m5s | python 3.14.6/megahit/CLEAN |
|
||||
| biolabx-bioinfo-missing | 1m15s | 410M | ~12s | 1.43GB | 1m41s | python 3.13.14/STAR 2.7.11b/CLEAN |
|
||||
| biolabx-smoke-tools | 58s | 78M | ~8s | 289MB | 1m4s | python 3.14.6/CLEAN |
|
||||
| biolabx-variant-tools | 39s | 125M | ~9s | 457MB | 1m10s | python 3.14.6/bcftools 1.23.1/CLEAN |
|
||||
|
||||
> 注: 上表 16 行均为 2026-09-06 实测; 无 python 的 4 环境走 --dest-prefix 打包(免 conda-unpack);
|
||||
> 全部 16 镜像通过 §6 清单 + 加强断言(无 conda-unpack 残留、bin 无源前缀 shebang)。
|
||||
|
||||
Reference in New Issue
Block a user