首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Cloud9建筑码头形象失败

AWS Cloud9建筑码头形象失败
EN

Server Fault用户
提问于 2020-04-30 16:37:22
回答 2查看 1K关注 0票数 4

我对网络和服务器管理非常陌生,所以提前感谢您的耐心。

目前,我正在学习如何在AWS的Cloud9上构建一个码头映像。

下面的教程来自AWS本身,名为MythicalMysfits,它旨在引导新用户了解AWS上用于构建现代web应用程序的主要工具。

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

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

当我运行以下命令时:

代码语言:javascript
运行
复制
docker build . -t REPLACE_ME_AWS_ACCOUNT_ID.dkr.ecr.REPLACE_ME_REGION.amazonaws.com/mythicalmysfits/service:latest

当然,我用我的帐户ID和地区来替换两个必要的部分。

它提示另一个名为"Dockerfile“的文件,其中包含要运行的以下命令:

代码语言:javascript
运行
复制
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"]

此时,代码开始运行,但是失败:

代码语言:javascript
运行
复制
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 9‘S IDE中不工作,所以我使用sudo yum手动安装python包。我花了两天多几个小时来想办法解决这个问题。正如本教程所建议的,我也在正确的目录中。

你知道为什么"Dockerfile“行为不端吗?

我再次感谢你抽出时间。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2020-05-01 11:16:52

我也在遵循同样的教程。我和你有同样的问题。

我解决它的方法是:

  • 用python3-pip代替python
  • 用pip3代替pip

在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"]
票数 4
EN

Server Fault用户

发布于 2020-04-30 17:07:58

作为编写dockerfiles的一般规则:可以使用命令行按顺序手动执行每个运行行的内容吗?这可能会为您提供有关故障所在的宝贵调试信息。

看起来apt-get确实起作用了,python应该可以在Debian/Ubuntu repos中使用。

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

代码语言:javascript
运行
复制
docker images
docker rmi <image>

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

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1015008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档