简体   繁体   中英

Docker - Can't access Django server

I can not connect to django through the port in the container. I'm using this address: 0.0.0.0.:8000 and see: http://joxi.ru/Dr8MeGLhkBWnLm . I'm creating an image and a container with one command: 'docker-compose up -d'.

$ 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"]

How do I solve this issue?

Your issue:

CMD ["python", "manage.py", "runserver", "8000"]

In order for it to work, you need to change it to:

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

and finally, go to http://127.0.0.1:8000/ in your browser.

Why? Well, Python thinks you're exposing it on 127.0.0.1 when in reality you want the eth0 address, since that can change, and we don't want to hard code it, we use 0.0.0.0 which means "ALL" interfaces.

Remember docker 127.0.0.1 is NOT your host 127.0.0.1 , each docker container has it's own loopback (means 127.0.0.1) .

Extra: If you don't want to write out 0.0.0.0 you can simply write 0 -- does the same thing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM