首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile WORKDIR从层分散运行程序?

Dockerfile WORKDIR从层分散运行程序?
EN

Stack Overflow用户
提问于 2022-10-12 02:17:49
回答 1查看 28关注 0票数 0

我创建了Dockerfile,用于生成可从AWS批处理运行的Docker映像,包含多个层,将文件复制到'/opt',并将其设置为WORKDIR

我必须运行一个名为'BLAST‘的程序,它是一个.exe程序,需要几个参数,包括DB的位置。

当我运行映像时,会出现错误,因为它找不到安装的DB位置。完全错误消息是b'BLAST Database error: No alias or index file found for nucleotide database [/mnt/fsx/ntdb/nt] in search path [/opt:/fsx/ntdb:]\n'],其中/mnt/fsx/ntdb/nt是DB路径。

唯一的假设是,我在Dockerfile中给出了WORKDIR,因此默认工作区设置为'/opt:‘。

我想知道我该如何解决这个问题。通过移除WORKDIR?还是别的什么?

我的Dockerfile如下所示

代码语言:javascript
复制
# Set Work dir
ARG FUNCTION_DIR="/opt"

# Get layers
FROM (aws-account).dkr.ecr.(aws-region).amazonaws.com/uclust AS layer_1
FROM (aws-account).dkr.ecr.(aws-region).amazonaws.com/blast AS layer_2
FROM public.ecr.aws/lambda/python:3.9

# Copy arg and set work dir
ARG FUNCTION_DIR
COPY . ${FUNCTION_DIR}
WORKDIR ${FUNCTION_DIR}

# Copy from layers
COPY --from=layer_1 /opt/ .
RUN true
COPY --from=layer_2 /opt/ .
RUN true
COPY . ${FUNCTION_DIR}/
RUN true

# Copy and Install required libraries
COPY requirements.txt .
RUN true
RUN pip3 install -r requirements.txt
# To run lambda handler
RUN pip install \
        --target "${FUNCTION_DIR}" \
        awslambdaric
# To run blast
RUN yum -y install libgomp

# See files inside image
RUN dir -s

# Get permissions for files
RUN chmod +x /opt/main.py
RUN chmod +x /opt/mode/submit/main.py

# Set Entrypoint and CMD
ENTRYPOINT [ "python3" ]
CMD [ "-m", "awslambdaric", "main.lambda_handler" ]

编辑:我发现了更多信息,当查看错误时,BLAST程序试图在路径/opt:/fsx/ntdb:上搜索db,这是Dockerfile中作为WORKDIR的路径集和os.environ.['BLASTDB'] (Os.environ[BLASTDB]描述.)设置的BLASTDB路径的组合。

EN

回答 1

Stack Overflow用户

发布于 2022-10-13 00:01:22

经过多次调试试验,找出了问题所在。所以问题既不是WORKDIR,也不是os.environ.['BLASTDB']。正确定义了路径,根据[/opt:/fsx/ntdb:]中的内容,BLAST程序搜索这里的方法是正确的。

  1. 当前工作目录(*)
  2. 用户主目录(*)
  3. NCBI环境变量指定的目录。
  4. 标准系统目录(类Unix系统上的“/etc”,由Windows上的环境变量SYSTEMROOT提供)

实际的解决方案是检查文件系统是否正确安装以及文件系统内文件的权限。最初我认为文件系统被正确地挂载了,因为我已经从其他批提交作业中多次测试过,但是只创建了挂载文件夹,文件就不存在了。因此,即使程序试图查找索引文件,它也找不到任何这样的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74035796

复制
相关文章

相似问题

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