首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建Docker镜像

构建Docker镜像
EN

Stack Overflow用户
提问于 2021-03-24 12:10:43
回答 1查看 125关注 0票数 1

我正在尝试使用Dockerfile构建我自己的docker镜像。但是,Docker镜像有问题。这是我的dockerfile。第一次,它说成功构建了镜像;然而,一些包不工作(错误,如权限被拒绝和命令找不到),所以我决定删除所有的镜像和容器来重建这个镜像。它一直在说使用缓存而不是重新安装所有的包。当我使用这个docker时,它一开始就失败了。

代码语言:javascript
复制
FROM ubuntu:18.04
ENV PATH="/root/miniconda3/bin:${PATH}"
ARG PATH="/root/miniconda3/bin:${PATH}"
RUN apt-get update

RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*

RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && mkdir /root/.conda \
    && bash Miniconda3-latest-Linux-x86_64.sh -b \
    && rm -f Miniconda3-latest-Linux-x86_64.sh 
RUN conda --version

RUN conda config --add channels defaults

RUN conda config --add channels bioconda

RUN conda config --add channels conda-forge

RUN conda install -c bioconda bowtie2 fastqc samtools ucsc-bedsort ucsc-bedgraphtobigwig bedtools deeptools homer seacr
EN

回答 1

Stack Overflow用户

发布于 2021-03-24 21:50:50

就像评论中的其他人所说的那样,您的Dockerfile构建正确,并且应该可以使用docker run按预期工作。我有一些使用Nextflow构建和运行Docker容器的经验,所以我想我应该分享一下我构建容器的经验,该容器包含运行您的工作流所需的所有包。

首先,考虑将所需的包移动到environment.yml文件中。这将有助于将项目的所有依赖项保存在一个位置:

代码语言:javascript
复制
name: my-awesome-project
channels:
  - bioconda
  - conda-forge
  - defaults
dependencies:
  - bowtie2
  - fastqc
  - samtools
  - ucsc-bedsort
  - ucsc-bedgraphtobigwig
  - bedtools
  - deeptools
  - homer
  - seacr

其次,考虑从continuumio/miniconda3构建Dockerfile文件

代码语言:javascript
复制
FROM continuumio/miniconda3:4.9.2

RUN apt-get update \
    && apt-get install -y procps \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/*

COPY environment.yml /

RUN conda env create -f /environment.yml \
    && conda clean -a

ENV PATH /opt/conda/envs/my-awesome-project/bin:$PATH

COPY install_packages.R /
COPY bed_convert.R /
COPY cut_tag_fingerprint_cmd.R /

RUN Rscript install_packages.R
CMD ["Rscript", "bed_convert.R"]
CMD ["Rscript", "cut_tag_fingerprint_cmd.R"]

最后,将Conda和Docker的配置文件添加到nextflow.config文件中。也许下面这样的内容就足够了:

代码语言:javascript
复制
process.container = 'my-awesome-project:v1.0'

profiles {
  conda { process.conda = "${baseDir}/environment.yml" }
  docker { docker.enabled = true }
  singularity { singularity.enabled = true }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66774653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档