Конда Env, кажется, не установлен в docker, но работает, почему? - PullRequest
0 голосов
/ 11 апреля 2020

Я создаю свой собственный образ с помощью Dockerfile для упаковки моего приложения conda / pandas. У меня были некоторые проблемы, чтобы заставить его работать по нескольким причинам (conda не в пути с базовым образом Alpine, но хорошо с Debian один и другие вещи ...).

Путем Googling вокруг, я мог бы сделать это работать, но я позволил некоторую "отладку", и я ясно вижу, что env, который я создаю, не установлен, но, тем не менее, он работает.

Я хотел бы понять, почему реклама это причина, почему я спрашивая сообщество.

Здесь Dockefile:

FROM continuumio/miniconda3:4.8.2-alpine

# Why need to be the root user ?
# Isn't that unsecure ?
USER root
# TODO : Find a better way and put conda in PATH
RUN . /opt/conda/etc/profile.d/conda.sh && conda update conda
RUN . /opt/conda/etc/profile.d/conda.sh && conda --version
RUN apk update

ENV CONDA_ENV_NAME categorisation-incidents-predict
WORKDIR /usr/src
COPY environment.yml .
COPY ./app ./app/

RUN pwd
RUN ls -la

RUN . /opt/conda/etc/profile.d/conda.sh && conda env create -n $CONDA_ENV_NAME -f environment.yml
#CMD ["conda", "activate", "$CONDA_ENV_NAME"]
RUN echo "source activate $CONDA_ENV_NAME" > /etc/bashrc
ENV PATH=/opt/conda/envs/$CONDA_ENV_NAME/bin:$PATH

# Here I can see that's the activate env is 'base' and not $CONDA_ENV_NAME
RUN . /opt/conda/etc/profile.d/conda.sh && conda env list

RUN python --version
# I'm able to use those module so what ?
RUN python -m spacy download fr_core_news_sm
RUN python -m nltk.downloader all

CMD [ "python", "app/main.py" ]

И интересная часть журнала:

Step 18/22 : RUN . /opt/conda/etc/profile.d/conda.sh && conda env list
 ---> Running in 8a7af41ed69e
# conda environments:
#
base                  *  /opt/conda
categorisation-incidents-predict     /opt/conda/envs/categorisation-incidents-predict

Removing intermediate container 8a7af41ed69e
 ---> ee1fa95a28e0

Также я вижу этот вид журнала при сборке изображения:

Removing intermediate container 0f0ef3f467f4
 ---> 5d63438b9c14
```
Why ?
...