Amazon-Web-Services

AWS Cloud9 建構 Docker 映像失敗

  • June 9, 2020

我對網路和伺服器管理很陌生,所以提前感謝您的耐心等待。

目前我正在學習如何在 AWS 的 Cloud9 上建構一個 docker 鏡像。

我正在關注的教程來自 AWS 本身,名為 MythicalMysfits,旨在引導新使用者了解 AWS 上使用的主要工具來建構現代 Web 應用程序。

我目前正在進行第 2 步,建立一個動態網站:

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”行為不端嗎?

我再次感謝你的時間。

我也在關注相同的教程。我和你有同樣的問題。

我通過以下方式解決了它:

  • 使用python3-pip而不是python-pi
  • 使用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"]

我將 Dockerfile 的第一行從

FROM ubuntu:latest

FROM ubuntu:18.04

不過,我不能說這是否有任何成本影響。

引用自:https://serverfault.com/questions/1015008