#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, который вы установили в своей собственной системе, недоступен.