44

I have a simple Dockerfile:

FROM ubuntu:18.04

RUN apt-get update

RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*

RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && mkdir /root/.conda \
    && bash Miniconda3-latest-Linux-x86_64.sh -b \
    && rm -f Miniconda3-latest-Linux-x86_64.sh \
    && echo PATH="/root/miniconda3/bin":$PATH >> .bashrc \
    && exec bash \
    && conda --version

RUN conda --version

And it cannot be built. At the very last step I get /bin/sh: 1: conda: not found....
The first appearance of conda --version did not raise an error which makes me wonder is that an PATH problem?
I would like to have another RUN entry in this Dockerfile in which I would install packages with conda install ...
At the end I want to have CMD ["bash", "test.py"] entry so that when in do docker run this image it automatically runs a simple python script that imports all the libraries installed with conda. Maybe also a CMD ["bash", "test.sh"] script that would test if conda and python interpreter are indeed installed.

This is a simplified example, there will be a lot of software so I do not want to change the base image.

LinPy
  • 16,987
  • 4
  • 43
  • 57
maciek
  • 1,807
  • 2
  • 18
  • 30
  • 1
    see also: https://stackoverflow.com/questions/57292146/problems-running-conda-update-in-a-dockerfile – cel Oct 07 '19 at 14:12

2 Answers2

84

This will work using ARG and ENV:

FROM ubuntu:18.04
ENV PATH="/root/miniconda3/bin:${PATH}"
ARG PATH="/root/miniconda3/bin:${PATH}"
RUN apt-get update

RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*

RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && mkdir /root/.conda \
    && bash Miniconda3-latest-Linux-x86_64.sh -b \
    && rm -f Miniconda3-latest-Linux-x86_64.sh 
RUN conda --version
LinPy
  • 16,987
  • 4
  • 43
  • 57
  • 3
    If you get "/bin/sh: conda: command not found" is because you did not add the miniconda to your PATH. This is why you have to set the environment variables shown on the top of the snippet. – Matheus Araujo Oct 13 '21 at 16:29
  • remove the brackets of {PATH}, change it to "/root/miniconda3/bin:$PATH" works on my device – Howcanoe Wang Oct 18 '21 at 11:54
-3

@soren -- you must run $CONDA_BIN/conda init. restart a new shell. then conda activate should work. conda init updates your shall login profiles to setup conda upon login (or sourcing, say .bashrc)

iamh2o
  • 15
  • 5