私はネットワーキングとサーバー管理に非常に慣れていないので、しばらくお待ちください。
現在、AWSのCloud9でDockerイメージを構築する方法を学んでいます。
私がフォローしているチュートリアルはAWS自体からのもので、MythicalMysfitsという名前が付けられています。これは、新しいユーザーにAWSで使用される主要なツールを紹介し、最新のウェブアプリケーションを構築することを目的としています。
現在、ステップ2で動的なWebサイトを構築しています。
次のコマンドを実行すると:
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」が正しく動作しない理由について何か考えがありますか?
お時間をいただきありがとうございます。
私も同じチュートリアルに従っています。私はあなたと同じ問題を抱えていました。
私はそれを解決しました:
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
ただし、これがコストに影響するかどうかはわかりません。
Dockerfilesを作成する際の一般的なルールとして:コマンドラインを使用して、各RUN行の内容を手動で順番に実行できますか?これにより、障害の場所に関する貴重なデバッグ情報が得られる場合があります。
Apt-getは実際に機能しており、python-pipはDebian/Ubuntuリポジトリで利用できるはずです。
Dockerは、特にdockerfileを変更した後、ビルドキャッシュで予期しない方法で動作することがあり、失敗しますafterキャッシュされた操作。この可能性を排除する最も安全な方法は、次のコマンドを実行してキャッシュを削除することです。
docker images
docker rmi <image>
そして、最近のビルド試行イメージを削除して、キャッシュを削除します