Py学习  »  docker

在docker中激活conda环境并在WDL中使用图像

manish • 1 年前 • 375 次点击  

我正在开发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环境似乎已停用。我如何解决这样的问题?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/134327
 
375 次点击