Dockerfile: Python3 не найден

#docker #docker-compose #dockerfile

#docker #docker-compose #dockerfile

Вопрос:

Я пытаюсь преобразовать скрипт bash в файл Dockerfile, поскольку мы идем по пути контейнеризации с помощью пакета AWS

В основном я устанавливаю CPLEX (библиотеку оптимизации) и Anaconda, устанавливаю некоторые связанные пакеты, проверяю, подходит ли моя среда, а затем запускаю сценарий оболочки для запуска пакетного задания.

Вот фрагмент моего Dockerfile:

 FROM amazonlinux:latest

# Download packages for container
RUN yum update -y
RUN yum -y install which unzip aws-cli 
RUN yum install -y tar.x86_64 
RUN yum install gzip -y
RUN yum install ncompress -y
RUN yum -y install wget
RUN yum install -y nano

# Set working directory
WORKDIR /setup

#: Copy CPLEX installer binary and installation script.
COPY cplex_odee1210.linux-x86-64.bin /setup/
COPY cplex_installer_input.sh /setup/

#: Install CPLEX and update .bashrc
RUN chmod  x /setup/cplex_odee1210.linux-x86-64.bin 
RUN chmod  x cplex_installer_input.sh
RUN ./cplex_installer_input.sh | bash cplex_odee1210.linux-x86-64.bin 
RUN echo 'export PATH=$PATH:/opt/ibm/ILOG/CPLEX_Optimizer1210/cplex/bin/x86-64_linux' >>/root/.bashrc 
    amp;amp; /bin/bash -c "source ~/.bashrc"
ENV PATH $PATH:/opt/ibm/ILOG/CPLEX_Optimizer1210/cplex/bin/x86-64_linux

#: Download Anaconda
COPY Anaconda3-2019.10-Linux-x86_64.sh /setup/
RUN bash Anaconda3-2019.10-Linux-x86_64.sh -b -p /home/ec2-user/anaconda3 
RUN echo 'export PATH=$PATH:/home/ec2-user/anaconda3/bin' >>/root/.bashrc 
    amp;amp; /bin/bash -c "source ~/.bashrc"
ENV PATH $PATH:/home/ec2-user/anaconda3/bin

RUN conda install pandas -y 
    amp;amp; conda install numpy -y 
    amp;amp; conda install ujson -y 
    amp;amp; pip install docplex 
    amp;amp; pip install boto3 
    amp;amp; pip install grpcio 
    amp;amp; pip install grpcio-tools



RUN python3 -m docplex.mp.environment

ADD fetch_and_run.sh /usr/local/bin/fetch_and_run.sh

ENTRYPOINT ["/usr/local/bin/fetch_and_run.sh"]
  

Оттуда я запускаю скрипт bash

 #!/bin/bash
date
echo "Args: $@"
env
echo "script_path: $1"
echo "script_name: $2"
echo "path_prefix: $3"
echo "jobID: $AWS_BATCH_JOB_ID"
echo "jobQueue: $AWS_BATCH_JQ_NAME"
echo "computeEnvironment: $AWS_BATCH_CE_NAME"

echo "current directory: $(pwd)"

mkdir /tmp/scripts/
aws s3 cp $1 /tmp/scripts/$2
python3 /tmp/scripts/${@:2}
  

Но по какой-то причине я продолжаю получать

 /tmp/tmp.hQlWYBEFs/batch-file-temp: line 20: python3: command not found
  

Нужно ли мне изменять некоторые переменные ПУТИ? Почему Docker не подбирает мою версию Python 3?

Ответ №1:

В образе должен быть установлен python3. Создание образов работает с файлами и программами, которые существуют в контейнере. Python3, который вы установили в своей собственной системе, недоступен.