Docker netværksproblemet kun under Windows 10

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Dockerfile og docker-compose.yml, som jeg udviklede på OSX. Det ser sådan ud:


cat Dockerfile:


FROM alpine:3.7

ADD ./app /home/app/
WORKDIR /home/app/

RUN apk add --no-cache postgresql-dev gcc python3 python3-dev musl-dev && 
    python3 -m ensurepip && 
    rm -r /usr/lib/python*/ensurepip && 
    pip3 install --upgrade pip setuptools && 
    rm -r /root/.cache && 
    pip3 install -r requirements.txt

EXPOSE 5000

ENTRYPOINT ["python3", "app.py"]


cat docker-compose.yml:


version: "3"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - ./app/:/home/app/
    depends\_on:
      - db
  db:
    image: postgres:10
    environment:
      - POSTGRES\_USER=testusr
      - POSTGRES\_PASSWORD=password
      - POSTGRES\_DB=testdb
    expose:
      - 5432


Jeg starter derefter via: docker-compose up --build -d og åbner webbrowseren på port 5000, den viser en formular (som forventet). Igen fungerer dette perfekt på OSX.


Men i Windows 10 vises det bare en tom side. Og docker port <CONTAINER> viser 5000/tcp -> 0.0.0.0:5000, så jeg ved, at den er bundet til den højre havn.


Hvis jeg docker logs -f <python container> viser det, viser det sig ikke, at anmodningen nogensinde kommer til containeren. Normalt udskrives en ny linje (w/statuskode) for hver flaske/nginx-respons. I dette tilfælde ser det ud til at det er s ikke engang kommer til python ansøgningsbeholderen.


Så, nogen ide, hvorfor det ikke virker på Windows?

Bedste reference


Så svaret er, at du skal bruge docker-machine ip for at se, hvad IP-beholderen er bundet til. Det bindes ikke bare til localhost/127.0.0.1 som det gør på OSX.