Using Daeploy with Conda

If you prefer using conda over pip + venv you can still install Daeploy with pip inside of your conda environment. Everything will work as usual in your development environment:

>>> conda create --name myenv  
>>> conda activate myenv  
>>> conda install pip  
>>> pip install daeploy  

To check the installation, run:

>>> daeploy --help  

Conda in Production Environment

daeploy deploy from source code only uses pip, if you want to run your service in a conda environment on the manager you have to build an image from the service source code, forfeiting some of the convenience of Daeploy. A minimal example:

>>> daeploy init  
project_name [my_project]: conda_daeploy_project

Add an environment.yml file to the repo by running:

>>> conda env export > conda_daeploy_project/environment.yml  

Add a Dockerfile to the project. A minimal working dockerfile can be:

# 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 service.py .
ENTRYPOINT ["conda", "run", "-n", "myenv", "python", "service.py"]

Note

You will have to change myenv to the name of the environment described by environment.yml if you named it something else.

Create an image with:

>>> docker build -t conda_project ./conda_daeploy_project  

And save it as a tar file with:

>>> docker save conda_project -o ./conda_project.tar  

To run it on a remote manager you first have to upload the image. This is easiest done from the manager API using the interactive documentation at http://your-host/docs. Upload the image with /services/~upload-image and then you can deploy it with:

>>> daeploy deploy conda_project 1.0.0 -i conda_project