Я новичок в управлении сетями и серверами, поэтому заранее благодарим вас за терпение.
В настоящее время я изучаю, как создать образ докера на AWS Cloud9.
Учебное пособие, которому я следую, принадлежит AWS и называется MythicalMysfits. Оно предназначено для ознакомления нового пользователя с основными инструментами, используемыми на AWS для создания современного веб-приложения.
Сейчас я на шаге 2, создаю динамический веб-сайт:
Когда я запускаю следующую команду:
docker build . -t REPLACE_ME_AWS_ACCOUNT_ID.dkr.ecr.REPLACE_ME_REGION.amazonaws.com/mythicalmysfits/service:latest
Я, конечно, заменяю две необходимые части своим идентификатором учетной записи и регионом.
Он предлагает запустить другой файл с именем «Dockerfile», содержащий следующие команды:
FROM ubuntu:latest
RUN echo Updating existing packages, installing and upgrading python and pip.
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install --upgrade pip
RUN echo Copying the Mythical Mysfits Flask service into a service directory.
COPY ./service /MythicalMysfitsService
WORKDIR /MythicalMysfitsService
RUN echo Installing Python packages listed in requirements.txt
RUN pip install -r ./requirements.txt
RUN echo Starting python and starting the Flask service...
ENTRYPOINT ["python"]
CMD ["mythicalMysfitsService.py"]
На этом этапе код начинает выполняться, но не работает:
Sending build context to Docker daemon 14.85kB
Step 1/13 : FROM ubuntu:latest
---> 1d622ef86b13
Step 2/13 : RUN echo Updating existing packages, installing and upgrading python and pip.
---> Using cache
---> d5aa972842ca
Step 3/13 : RUN apt-get update -y
---> Using cache
---> 56374a45d258
Step 4/13 : RUN apt-get install -y python-pip python-dev build-essential
---> Running in 3ce71d802d94
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package python-pip
The command '/bin/sh -c apt-get install -y python-pip python-dev build-essential' returned a non-zero code: 100
Я понимаю, что вне этого документа apt-get не работает в IDE Cloud9, поэтому мне удалось установить пакеты python вручную с помощью sudo yum. Я потратил несколько часов на два дня, пытаясь понять это. Я также нахожусь в правильном каталоге, как советует учебник.
Вы хоть представляете, почему "Dockerfile" плохо себя ведет?
Еще раз благодарю вас за ваше время.
Я тоже следую тому же руководству. У меня была такая же проблема, как и у вас.
Я решил это:
В файле Docker вам просто нужно изменить следующие строки:
Заменить строку 4 на:
RUN apt-get install -y python3-pip python-dev build-essential
Заменить строку 5 на:
RUN pip3 install --upgrade pip
Заменить строку 10 на:
RUN pip3 install -r ./requirements.txt
Заменить строку 12 на:
ENTRYPOINT ["python3"]
Я изменил первую строку Dockerfile с
FROM ubuntu:latest
к
FROM ubuntu:18.04
Однако я не могу сказать, будет ли это иметь какие-либо финансовые последствия.
В качестве общего правила при написании файлов докеров: можете ли вы последовательно выполнить содержимое каждой строки RUN вручную с помощью командной строки? Это может дать вам ценную отладочную информацию о том, где находится сбой.
Похоже, что apt-get действительно работает, и python-pip должен быть доступен в репозиториях Debian / Ubuntu.
Docker иногда ведет себя неожиданным образом с кешем сборки, особенно после изменения файла dockerfile, а у вас происходит сбой после кэшированные операции. Самый безопасный способ устранить эту возможность - удалить кеш, запустив:
docker images
docker rmi <image>
и удалите образ недавней попытки сборки, чтобы удалить кеш