コンテナのポートを介してDjangoに接続できません。このアドレスを使用しています:0.0.0.0.:8000、次を参照してください http://joxi.ru/ Dr8MeGLhkBWnLm 。「docker-compose up -d」という1つのコマンドでイメージとコンテナーを作成しています。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4fea50856eef docker_web "python manage.py ru…" 13 seconds ago Up 11 seconds 0.0.0.0:8000->8000/tcp docker_web_1
docker-compose.yaml
version: '3'
services:
web:
build:
context: .
dockerfile: /Django.testsite/Dockerfile
ports:
- "8000:8000"
Dockerfile
FROM python:3
RUN easy_install pip
RUN pip install Django==1.9.12
RUN pip install requests
ADD . /.
WORKDIR /Django.testsite
CMD ["python", "manage.py", "runserver", "8000"]
この問題を解決するにはどうすればよいですか?
あなたの問題:
CMD ["python", "manage.py", "runserver", "8000"]
これを機能させるには、次のように変更する必要があります。
CMD ["python", "manage.py", "runserver", "0.0.0.0", "8000"]
最後に、ブラウザで http://127.0.0.1:8000/ を使用します。
どうして?まあ、Pythonは実際にはeth0アドレスが必要なときに127.0.0.1で公開していると考えています。これは変更できるため、ハードコーディングしたくないので0.0を使用します。 .0.0は「すべて」のインターフェースを意味します。
Docker 127.0.0.1を思い出してくださいISホスト127.0.0.1ではなく、各dockerコンテナーには独自のループバックがあります。
完全に機能させるには:
docker-compose down
docker rmi docker_web
docker-compose up -d
または..(これは構文であることが80%だと思います)
docker-compose down
docker-compose up -d --rebuild
本当に連携しない場合は、docker ps -a
を参照して、何も実行されていないことを確認してください。 (ps。docker rm <id>
を使用してそれを取り除くことができます。追加のクレジット:docker ps -aq | xargs docker rm
がすべてを実行します;))
補足:0.0.0.0
を書きたくない場合は、0
と書くだけで同じことができます。