Я создаю свой собственный образ с помощью 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 ?