AWS Cloud9 构建 Docker 映像失败

AWS Cloud9 构建 Docker 映像失败

我对网络和服务器管理还很陌生,因此提前感谢您的耐心。

目前我正在学习如何在 AWS 的 Cloud9 上构建 docker 镜像。

我所遵循的教程来自 AWS 自己,名为 MythicalMysfits,旨在引导新用户了解 AWS 上用于构建现代 Web 应用程序的主要工具。

我目前处于第二步,构建一个动态网站:

https://aws.amazon.com/getting-started/hands-on/build-modern-app-fargate-lambda-dynamodb-python/module-two/

当我运行以下命令时:

docker build . -t REPLACE_ME_AWS_ACCOUNT_ID.dkr.ecr.REPLACE_ME_REGION.amazonaws.com/mythicalmysfits/service:latest

我当然用我的账户ID和地区替换了必要的两个部分。

它提示运行另一个名为“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 在 Cloud9 的 IDE 中不起作用,因此我设法使用 sudo yum 手动安装了 python 包。我花了两天多的时间来弄清楚。我也按照教程建议位于正确的目录中。

你知道为什么“Dockerfile”会出现错误吗?

再次感谢您抽出时间。

答案1

我也在遵循相同的教程。我遇到了和你一样的问题。

我通过以下方式解决了它:

  • 使用python3-pip代替python-pi
  • 使用pip3代替点子

在 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"]

答案2

我将 Dockerfile 的第一行从

FROM ubuntu:latest

FROM ubuntu:18.04

但我不能说这是否会产生任何成本影响。

答案3

编写 dockerfile 的一般规则是:您能否使用命令行手动按顺序执行每个 RUN 行的内容?这可能会为您提供有关故障位置的宝贵调试信息。

看来 apt-get 确实可以工作,并且 python-pip 应该可以在 Debian/Ubuntu 存储库中使用。

Docker 有时会以意想不到的方式处理构建缓存,尤其是在修改 dockerfile 后,而你的构建缓存失败了缓存的操作。消除这种可能性的最安全方法是通过运行以下命令删除缓存:

docker images
docker rmi <image>

并删除最近的构建尝试图像以消除缓存

相关内容