web-dev-qa-db-ja.com

AWS Cloud9構築Dockerイメージが失敗する

私はネットワーキングとサーバー管理に非常に慣れていないので、しばらくお待ちください。

現在、AWSのCloud9でDockerイメージを構築する方法を学んでいます。

私がフォローしているチュートリアルはAWS自体からのもので、MythicalMysfitsという名前が付けられています。これは、新しいユーザーにAWSで使用される主要なツールを紹介し、最新のウェブアプリケーションを構築することを目的としています。

現在、ステップ2で動的な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

もちろん、必要な2つの部分を自分のアカウント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パッケージをインストールできました。 veは、2日間で数時間を費やして、それを理解しようとしています。チュートリアルがアドバイスしているように、私も正しいディレクトリにいます。

「Dockerfile」が正しく動作しない理由について何か考えがありますか?

お時間をいただきありがとうございます。

2
amx5

私も同じチュートリアルに従っています。私はあなたと同じ問題を抱えていました。

私はそれを解決しました:

  • python-piの代わりにpython3-pipを使用する
  • pipの代わりに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"]

2
Régis C.

Dockerfileの最初の行を

FROM ubuntu:latest

FROM ubuntu:18.04

ただし、これがコストに影響するかどうかはわかりません。

1
mschmidt

Dockerfilesを作成する際の一般的なルールとして:コマンドラインを使用して、各RUN行の内容を手動で順番に実行できますか?これにより、障害の場所に関する貴重なデバッグ情報が得られる場合があります。

Apt-getは実際に機能しており、python-pipはDebian/Ubuntuリポジトリで利用できるはずです。

Dockerは、特にdockerfileを変更した後、ビルドキャッシュで予期しない方法で動作することがあり、失敗しますafterキャッシュされた操作。この可能性を排除する最も安全な方法は、次のコマンドを実行してキャッシュを削除することです。

docker images
docker rmi <image>

そして、最近のビルド試行イメージを削除して、キャッシュを削除します

0
Peleion