我正在开发dockerfile,需要在其中激活conda环境(工作正常)
Dockerfile:
FROM continuumio/miniconda3
WORKDIR /app
# Create the environment:
COPY environment.yml .
RUN conda env create -f environment.yml
# Make RUN commands use the new environment:
SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]
# The code to run when container is started:
COPY test.py .
ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "myenv"]
环境yml
name: myenv
channels:
- conda-forge
dependencies:
- python=3.8
- flask
- numpy
测验py
import numpy as np
# Creating a rank 1 Array
arr = np.array([1, 2, 3])
print("Array with Rank 1: \n",arr)
构建和推进docker形象:
docker build -t docker.io/myaccount/condaset:latest .
docker push docker.io/myaccount/condaset:latest
我测试了docker的图像,看起来效果不错。
docker run docker.io/myaccount/condaset python test.py
Array with Rank 1:
[1 2 3]
但当我在WDL中使用相同的docker图像时,它会给出错误。
测验wdl
version 1.0
task my_run
{
input
{
String somevar
}
parameter_meta {
}
command {
set -exo pipefail
python /app/test.py
}
output {
File out = ''
}
runtime {
docker: "docker.io/myaccount/condaset:latest"
}
}
workflow my_wokflow
{
input
{
String somevar
}
call my_run
{
input: somevar=somevar
}
}
输入json
{
"my_wokflow.somevar": "hello_world"
}
运行WDL时出错:
java-jar~/bin/cromwell-58。jar运行测试。wdl-i输入。json
[First 3000 bytes]:+ python /app/test.py
Traceback (most recent call last):
File "/app/test.py", line 1, in <module>
import numpy as np
ModuleNotFoundError: No module named 'numpy'
在WDL中调用dockerimage之前,conda环境似乎已停用。我如何解决这样的问题?