Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conda not found when trying to build Docker image

I've made the following Docker container for Plink and Peddy, but whenever I try to build the container, I'm getting the following error:

Executing transaction: ...working... WARNING conda.core.envs_manager:register_env(46): Unable to register environment. Path not writable or missing.
  environment location: /root/identity_check/anaconda
  registry file: /root/.conda/environments.txt
done
installation finished.
Removing intermediate container cdf60f5bf1a5
 ---> be254b7571be
Step 7/10 : RUN conda update -y conda   && conda config --add channels bioconda         && conda install -y peddy
 ---> Running in aa2e91da28b4
/bin/sh: 1: conda: not found
The command '/bin/sh -c conda update -y conda   && conda config --add channels bioconda         && conda install -y peddy' returned a non-zero code: 127

Dockerfile:

FROM ubuntu:19.04

WORKDIR /identity_check

RUN apt-get update && \
    apt-get install -y \
        python-pip \
        tabix \
        wget \
        unzip 

RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/* \
    && sudo apt-get -y update \
    && sudo pip install --upgrade pip \
    && sudo pip install awscli --upgrade --user \
    && sudo pip install boto3 \
    && sudo pip install pyyaml \
    && sudo pip install sqlitedict


# Install PLINK
RUN wget http://s3.amazonaws.com/plink1-assets/plink_linux_x86_64_20190617.zip \
    && mv plink_linux_x86_64_20190617.zip /usr/local/bin/ \
    && unzip /usr/local/bin/plink_linux_x86_64_20190617.zip

# Install Peddy
RUN INSTALL_PATH=~/anaconda \
    && wget http://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh \
    && bash Miniconda2-latest* -fbp $INSTALL_PATH \
    && PATH=$INSTALL_PATH/bin:$PATH

RUN conda update -y conda \
    && conda config --add channels bioconda \
    && conda install -y peddy

ENV PATH=$PATH:/identity_check/

ADD . /identity_check

CMD bash /identity_check/identity_setup.sh 

I've tried changing the INSTALL_PATH and seeing if that makes a difference and even launched a virtual machine to test out these installation steps manually and it works fine. I don't understand why conda isn't found.

like image 663
claudiadast Avatar asked Nov 17 '22 02:11

claudiadast


1 Answers

# Install Peddy
RUN INSTALL_PATH=~/anaconda \
    && wget http://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh \
    && bash Miniconda2-latest* -fbp $INSTALL_PATH \
    && PATH=$INSTALL_PATH/bin:$PATH

The last part of the above updates a PATH variable that will only exist in the shell running the command. That shell exits immediately after setting the PATH variable, and the temporary container used to execute the RUN command exits. The result of the RUN command is to gather the filesystem changes into a layer of the docker image being created. Any environment variable changes, background processes launched, or anything else not part of the container filesystem is lost.

Instead, you'll want to update the image environment with:

# Install Peddy
RUN INSTALL_PATH=~/anaconda \
    && wget http://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh \
    && bash Miniconda2-latest* -fbp $INSTALL_PATH \
ENV PATH=/root/anaconda/bin:$PATH

If the software permits it, I would avoid installing in the /root home directory and instead install it somewhere like /usr/local/bin, making it available if you change the container to run as a different user.

like image 59
BMitch Avatar answered Nov 18 '22 17:11

BMitch