https://sinyblog.com/docker/django-docker-001/#Dockerfileを参考にしてDocker環境でDjangoを作成しようとしたのですが
dockerでdocker-compose でpipコマンドを走らせてHash系のエラーが出ます。
ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
Django==3.0.2 from https://files.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl#sha256=4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a (from -r requirements.txt (line 1)):
Expected sha256 4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a
Got 6aba4ad691e29fadb6d5367e4c331bd4aee1d824fb4f005c3b8d3d9b055e8ad4
構成としてはプロジェクトのディレクトリ配下に以下のファイルを置いています。
Dokerfile
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install pip==19.1.1 --no-cache-dir
RUN pip install -r requirements.txt --no-cache-dir
requirements.txt
Django==3.0.2
psycopg2
docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
そしてdocker-compose up build
で実行すると上記エラーが発生します
DockerFileの--no-cache-dirはこのエラーはキャッシュから取得しているため発生するとの情報を得てつけていますが、これでも同じエラーが出ます。
https://stackoverflow.com/questions/61551480/clean-docker-pip-install-results-in-error-these-packages-do-not-match-the-hashe
によりpipのversionの問題らしくpipのversionを変更するようにしていますが、それでも同じエラーが出ています。
この解決策はありますか?
https://qiita.com/reflet/items/4b3f91661a54ec70a7dc
を参考にしてdockerでpythonを実行し、内部でpip install package名 を実行したところ同じHashのエラーが起こりました。
docker-toolboxでpythonのpipは実行できないのでしょうか?
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
追記
少なくともコンテナには原因がなさそうで、
環境依存であることが明確になりつつあります
コンテナがリクエストしている Django のハッシュ
こちらは問題なさそうです
現在 Docker コンテナがリクエストしている Django のハッシュは
PyPI 上のハッシュと一致しています:
他に考えられる原因
まだなんとも言えませんが、次の点が気になります:
ネットワーク:
- DNS が違う宛先を返している可能性
- PyPI に到達するまでのどこかでキャッシュが返ってきている可能性
コンピューター:
- ホストの Docker, Docker Compose のバグの可能性
切り分け
可能であれば、
現在コンテナをビルドしているコンピューターとネットワークの
どちらかだけを交換してみてビルドを行い、切り分けを行うと
原因がより明確になります
コンピューター | ネットワーク | 結果 |
---|---|---|
今ビルドしているコンピューター | 今ビルドしているネットワーク | × |
今ビルドしているコンピューター | 別のネットワーク | |
別のコンピューター | 今ビルドしているネットワーク | |
別のコンピューター | 別のネットワーク | ◯ |
第一次調査
次のコマンドで Python のイメージを削除してやり直すと改善しませんでしょうか?:
# 念のため失敗した Python イメージをバックアップ
docker tag python:3.6 python:sut
docker rmi python:3.6
docker-compose build --no-cache
こちらの環境では問題なく動作しました。
$ docker-compose up
Creating network "test-docker-django_default" with the default driver
Pulling db (postgres:)...
latest: Pulling from library/postgres
Digest: sha256:9ba6355d27ba9cd0acda1e28afaae4a5b7b2301bbbdc91794dcfca95ab08d2ef
Status: Downloaded newer image for postgres:latest
Building web
Step 1/7 : FROM python:3.6
3.6: Pulling from library/python
Digest: sha256:6655d57ae9272f09839a25d0ec0d272513663d99a4ad7af8b061c83a76d10295
Status: Downloaded newer image for python:3.6
---> 13efce2de907
Step 2/7 : ENV PYTHONUNBUFFERED 1
---> Running in 543c271145c9
Removing intermediate container 543c271145c9
---> 12d70abf69df
Step 3/7 : RUN mkdir /code
---> Running in 8f02235b9c79
Removing intermediate container 8f02235b9c79
---> 52ece72377a2
Step 4/7 : WORKDIR /code
---> Running in 0b428211651a
Removing intermediate container 0b428211651a
---> 95db4a2b1a35
Step 5/7 : ADD requirements.txt /code/
---> 960ba26ba189
Step 6/7 : RUN pip install pip==19.1.1 --no-cache-dir
---> Running in 19c4c86dae52
Collecting pip==19.1.1
Downloading pip-19.1.1-py2.py3-none-any.whl (1.4 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.1.1
Uninstalling pip-20.1.1:
Successfully uninstalled pip-20.1.1
Successfully installed pip-19.1.1
Removing intermediate container 19c4c86dae52
---> 9299e009e221
Step 7/7 : RUN pip install -r requirements.txt --no-cache-dir
---> Running in 3bc4f7c645a8
Collecting Django==3.0.2 (from -r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl (7.4MB)
Collecting psycopg2 (from -r requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz (380kB)
Collecting sqlparse>=0.2.2 (from Django==3.0.2->-r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/85/ee/6e821932f413a5c4b76be9c5936e313e4fc626b33f16e027866e1d60f588/sqlparse-0.3.1-py2.py3-none-any.whl (40kB)
Collecting pytz (from Django==3.0.2->-r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl (510kB)
Collecting asgiref~=3.2 (from Django==3.0.2->-r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/d5/eb/64725b25f991010307fd18a9e0c1f0e6dff2f03622fc4bcbcdb2244f60d6/asgiref-3.2.10-py3-none-any.whl
Building wheels for collected packages: psycopg2
Building wheel for psycopg2 (setup.py): started
Building wheel for psycopg2 (setup.py): finished with status 'done'
Stored in directory: /tmp/pip-ephem-wheel-cache-xfaezrjm/wheels/fb/85/a8/57f24b92b9554880384d00a84881c0ea80cbcee02d6dcede54
Successfully built psycopg2
Installing collected packages: sqlparse, pytz, asgiref, Django, psycopg2
Successfully installed Django-3.0.2 asgiref-3.2.10 psycopg2-2.8.5 pytz-2020.1 sqlparse-0.3.1
WARNING: You are using pip version 19.1.1, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Removing intermediate container 3bc4f7c645a8
---> d15023b3318d
Successfully built d15023b3318d
Successfully tagged test-docker-django_web:latest
Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating test-docker-django_db_1 ... done
Creating test-docker-django_web_1 ... done
Attaching to test-docker-django_db_1, test-docker-django_web_1
db_1 | Error: Database is uninitialized and superuser password is not specified.
db_1 | You must specify POSTGRES_PASSWORD to a non-empty value for the
db_1 | superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".
db_1 |
db_1 | You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
db_1 | connections without a password. This is *not* recommended.
db_1 |
db_1 | See PostgreSQL documentation about "trust":
db_1 | https://www.postgresql.org/docs/current/auth-trust.html
web_1 | python3: can't open file 'manage.py': [Errno 2] No such file or directory
test-docker-django_db_1 exited with code 1
test-docker-django_web_1 exited with code 2
こちらで実行したときの Python のコンテナのイメージは次のものでした:
python 3.6 13efce2de907 2 weeks ago 914MB
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
bsdfan
2020/06/15 10:42
python:3.6のイメージが古くなっているとかはないでしょうか?
docker pull python:3.6
で更新したら改善したりしませんか。
yymmt
2020/06/30 01:52
参考までに先ほどダウンロードしたばかりのpython:3.6でpip==20.1.1で特に問題は発生していません。
simasimaa
2020/07/24 18:16
別のPCでDocker ForWindowsで行ったらエラーは発生しませんでした。