我是Docker的新手。我正在尝试创建一个运行Snakemake管道的容器。这个管道将包含R和Python脚本。最后,我需要添加conda环境,克隆并构建git hub repo。但现在,我只是想让我的python和R包安装正确。
我开始遵循this问题的建议,创建一个既有Python又有R的环境。
这是我的Dockerfile。
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends build-essential r-base python3.9 python3-pip python3-setuptools python3-dev
WORKDIR /app
RUN pip3 install biopython
RUN pip3 install pandas
RUN pip3 install numpy
RUN Rscript -e "install.packages('tidyverse')"
RUN Rscript -e "install.packages('dplyr')"
RUN Rscript -e "install.packages('testit')"
RUN Rscript -e "install.packages('stringr')"
RUN Rscript -e "install.packages('BiocParallel')"
RUN Rscript -e "install.packages('MPRAnalyze')"
COPY test.R /app
CMD ["Rscript", "test.R"]
test.R脚本包含以下内容:
library(dplyr)
print("dplyr working!")
library(testit)
print("testit working!")
library(stringr)
print("stringr working!")
library(tidyverse)
print("tidyverse working!")
library(BiocParallel)
print("BiocParallel working!")
library(MPRAnalyze)
print("MPRAnalyze working!")
当我运行docker build
时,它似乎工作得很好。一切安装。
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 706B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 1.3s
=> [ 1/13] FROM docker.io/library/ubuntu:latest@sha256:dfd64a3b4296d8c9b 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 65B 0.0s
=> CACHED [ 2/13] RUN apt-get update && apt-get install -y --no-install- 0.0s
=> CACHED [ 3/13] WORKDIR /app 0.0s
=> CACHED [ 4/13] RUN pip3 install biopython 0.0s
=> CACHED [ 5/13] RUN pip3 install pandas 0.0s
=> CACHED [ 6/13] RUN pip3 install numpy 0.0s
=> [ 7/13] RUN Rscript -e "install.packages('tidyverse')" 893.1s
=> [ 8/13] RUN Rscript -e "install.packages('dplyr')" 12.1s
=> [ 9/13] RUN Rscript -e "install.packages('testit')" 2.8s
=> [10/13] RUN Rscript -e "install.packages('stringr')" 4.0s
=> [11/13] RUN Rscript -e "install.packages('BiocParallel')" 1.4s
=> [12/13] RUN Rscript -e "install.packages('MPRAnalyze')" 1.4s
=> [13/13] COPY test.R /app 0.0s
=> exporting to image 1.3s
=> => exporting layers 1.3s
=> => writing image sha256:328a4d8297eb16cef5f415b1067a1592d538db3ce15f9 0.0s
=> => naming to docker.io/library/wut
但是当我尝试运行docker run
时,它看起来不像是在工作。
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
[1] "dplyr working!"
[1] "testit working!"
[1] "stringr working!"
Error in library(tidyverse) : there is no package called 'tidyverse'
Execution halted
你知道这是怎么回事吗?我对解决这个问题的新方法持开放态度,只要我最终能安装一个conda环境并克隆github repo(上面的链接)。
1条答案
按热度按时间bq9c1y661#
我解决这个问题的方法是使用
Dockerfile
并从中构建映像。所有软件包看起来都安装成功了,正如您在上面的输出中所指出的那样。当我启动一个容器时,我可以注意到
tidyverse
包丢失了。当我尝试以交互方式安装它时,问题就暴露了:简而言之,您必须安装一些额外的系统库,例如
libcurl4-openssl-dev
、libssl-dev
、libfontconfig1-dev
、libxml2-dev
或
从Ubuntu存储库安装它
对于后一种选择,检查您获得的版本是否是您所追求的版本(如果您关心这些事情)。